Byte-swapping

Contenu du snippet

Méthode statique de byte-swapping d'un entier signé:

Cette méthode m'a servi à décoder sur une machine de type "little endian" (PC) les données d'un fichier binaire enregistré sur une machine de type "big endian" (SUN).

La méthode est déclarée "unsafe" car elle utilise un pointeur. Le pointeur pbyte pointe sur l'adresse de l'entier à "byte-swapper" et permet d'échanger les octets 2 à 2.
Pour utiliser cette méthode dans un projet, il faut autoriser la compilation de code unsafe dans les propriétés de compilation du projet.

Cette technique de byte-swapping peut être appliquée à d'autres types (entiers non signés, float, double...).
J'espère que cette source sera d'une quelconque utilité à certains d'entre vous.

Source / Exemple :


/// <summary>
/// Byte-swap an integer.
/// </summary>
/// <param name="n">
/// Integer.
/// </param>
/// <returns>
/// Byte-swapped integer.
/// </returns>
unsafe public static int Int(int n)
{
	byte *pbyte;
	pbyte = (byte *)&n;
			
	byte tmp;
	tmp = pbyte[0];
	pbyte[0] = pbyte[3];
	pbyte[3] = tmp;
	tmp = pbyte[1];
	pbyte[1] = pbyte[2];
	pbyte[2] = tmp;
			
	return n;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.