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
Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top