c# - getbytes - BitConverter VS ToString para Hexagonal
byte to int c# (2)
Supongo que porque GetBytes
devuelve una matriz de bytes que BitConverter.ToString
, en mi opinión, bastante bien
¡Y también tenga en cuenta que la represantación bit a bit puede ser diferente del valor! ¡Esto depende de dónde se encuentre el byte más significativo!
hth
Me pregunto si alguien podría explicar por qué las dos siguientes líneas de código arrojan resultados "diferentes". ¿Qué causa los valores invertidos? ¿Tiene esto algo que ver con endianness?
int.MaxValue.ToString("X") //Result: 7FFFFFFF
BitConverter.ToString(BitConverter.GetBytes(int.MaxValue)) //Result: FF-FF-FF-7F
int.MaxValue.ToString("X")
genera 7FFFFFFF
, es decir, el número 2147483647
como un todo .
Por otro lado, BitConverter.GetBytes
devuelve una matriz de bytes que representa 2147483647
en la memoria. En su máquina, este número se almacena en little-endian (último byte). Y BitConverter.ToString
funciona por separado en cada byte, por lo tanto, no reordena la salida para dar lo mismo que arriba, preservando así el orden de la memoria.
Sin embargo, los dos valores son los mismos: 7F-FF-FF-FF
para int.MaxValue
, en big-endian, y FF-FF-FF-7F
para BitConverter
, en little-endian. Mismo número.