Pregunta

BitConverter.ToUInt16 () espera que los bytes se inviertan, supongo que así es como se almacenan en la memoria. Pero, ¿cómo puedo convertirlo cuando no está invertido, sin modificar la matriz?

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

Solución

Parece que quieres mi EndianBitConverter en MiscUtil , que te permite especificar si deseas utilizar la endianness grande o pequeña.

Básicamente, proporciona la misma funcionalidad que BitConverter pero como métodos de instancia. Luego obtienes el tipo apropiado de EndianBitConverter y haces lo que quieres con él.

(Proporciona un poco más de funcionalidad para trabajar de manera eficiente con arrays, lo que puede o no ser útil para usted).

La biblioteca es de código abierto bajo una licencia bastante permisiva.

Otros consejos

También puede utilizar IPAddress.HostToNetworkOrder.

Creo que tu mejor llamada sería revertir la matriz con el método Array.Reverse.

http: // msdn. microsoft.com/en-us/library/system.array.reverse(VS.71).aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top