2009-04-29 7 views
0

BitConverter.ToUInt16() s'attend à ce que les octets soient inversés, je suppose que c'est ainsi qu'ils sont stockés en mémoire. Mais comment puis-je le convertir quand il n'est pas inversé, sans modifier le tableau?Conversion d'un tableau d'octets en Int-likes en C#

Byte[] ba = { 0, 0, 0, 6, 0, 0 }; 
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006 

Répondre

4

On dirait que vous voulez mon EndianBitConverter dans MiscUtil, qui vous permet de spécifier si vous voulez utiliser grand ou petit boutisme.

Fondamentalement, il fournit la même fonctionnalité que BitConverter mais en tant que méthodes d'instance. Vous obtenez alors le type approprié de EndianBitConverter et faites ce que vous voulez avec.

(Il fournit un peu plus de fonctionnalités pour travailler efficacement avec des tableaux qui peuvent ou peuvent ne pas être utile pour vous.)

La bibliothèque est ouverte d'origine sous une licence assez permissive.

+0

sens assez permissif "si vous voulez changer cela, ne le faites pas, car jon skeet connaît mieux votre code que vous et l'a déjà optimisé pour votre code" type licence? –

0

Vous pouvez également utiliser IPAddress.HostToNetworkOrder.