Conversione di array di byte in Mi piace Int in C #
Domanda
BitConverter.ToUInt16 () si aspetta che i byte vengano invertiti, immagino sia così che vengono archiviati in memoria. Ma come posso convertirlo quando non è invertito, senza modificare l'array?
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
Soluzione
Sembra che tu voglia il mio EndianBitConverter
in MiscUtil
, che consente di specificare se si desidera utilizzare l'endianness grande o piccola.
Fondamentalmente fornisce le stesse funzionalità di BitConverter
ma come metodi di istanza. Quindi ottieni il tipo appropriato di EndianBitConverter
e fai quello che vuoi con esso.
(Fornisce un po 'più di funzionalità per lavorare in modo efficiente con gli array, il che può essere utile o meno per te.)
La libreria è open source con una licenza abbastanza permissiva.
Altri suggerimenti
Puoi anche usare IPAddress.HostToNetworkOrder.
Penso che la tua migliore chiamata sarebbe quella di invertire l'array con il metodo Array.Reverse.
http: // msdn. microsoft.com/en-us/library/system.array.reverse(VS.71).aspx