toint32 getbytes example endian c# numbers hex endianness bitconverter

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.