C # Big-endian ulong à partir de 4 octets
Im essayant de jeter un 4 tableau d'octets à un ulong en C#. Je suis actuellement en utilisant ce code:
atomSize = BitConverter.ToUInt32(buffer, 0);
Le byte[4] contient ceci:
0 0 0 32
Toutefois, les octets sont Big-Endian. Est-il un moyen simple de convertir ce Big-Endian ulong à un Little-Endian ulong?
source d'informationauteur WesleyE | 2010-07-20
Vous devez vous connecter pour publier un commentaire.
Je crois que le EndianBitConverter dans Jon Skeet est MiscUtil bibliothèque (nuget lien) peut faire ce que vous voulez.
Vous pouvez également permuter les bits à l'aide d'opérations de déplacement de bits:
Utilisation:
System.Net.IPAddress.NetworkToHostOrder(atomSize);
vont retourner votre octets.Je recommande d'utiliser Mono est
DataConvert
qui est commeBitConverter
sur les stéroïdes. Il vous permet de lire en big-endian tableaux d'octets directement et améliore massivement surBitConverter
.Un lien direct vers la source est ici.
Pas?
Cela peut être vieux, mais je suis surpris que personne n'est venu avec cette réponse la plus simple encore, ne nécessite qu'une seule ligne...
Je l'utilise pour comparer les sommes de contrôle généré en C# (little-endian) avec les sommes de contrôle généré en Java (big-endian).