Convertendo matriz de bytes para Int-gosta em C #
Pergunta
BitConverter.ToUInt16 () espera que os bytes para ser revertidas, eu acho que é como eles são armazenados na memória. Mas como posso convertê-lo quando ele não está invertida, w / o modificar a matriz?
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
Solução
Parece que você quer o meu EndianBitConverter
em MiscUtil
, que permite especificar se você quer usar endianness grande ou pequena.
Basicamente, fornece a mesma funcionalidade que BitConverter
mas como os métodos de instância. Você, então, obter o tipo apropriado de EndianBitConverter
e fazer o que quiser com ele.
(Ele fornece um pouco mais funcionalidade para trabalhar eficientemente com matrizes, o que pode ou não ser útil.)
A biblioteca é código aberto sob uma licença razoavelmente permissiva.
Outras dicas
Você também pode usar IPAddress.HostToNetworkOrder.
Eu acho que sua melhor chamada seria para reverter a matriz com método Array.Reverse.
http: // MSDN. microsoft.com/en-us/library/system.array.reverse(VS.71).aspx