Convertir la matriz de bytes a Int-likes en C #
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
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