Estoy creando un GUID como estoGuid de orden de bytes en .NET
Guid g = new Guid(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF });
Console.WriteLine(g);
Esto da salida a
03020100-0504-0706-0809-0a0b0c0d0e0f
Según Wikipedia Hay cuatro partes en el GUID y esto explica por qué el interruptor de fin de bytes en cuatro grupos Sin embargo, el artículo de Wikipedia también establece que todas las partes se almacenan en formato Big Endian. Obviamente, las tres primeras partes no son Big Endian. El método GetBytes() del guid devuelve los bytes en el mismo orden utilizado para la creación. ¿Cuál es la explicación para este comportamiento?
De acuerdo con Wikipedia (no revisé las referencias), el estándar UUID del cual se supone que GUID es la implementación indica que las partes deben estar codificadas en Big Endian. Las especificaciones UUID y GUID definen que hay cuatro partes de tamaños 4, 2, 2 y 8 bytes en este orden. – Stilgar
De hecho, y cuando se muestra la última parte de 8 bytes se muestra normalmente como 2bytes-6bytes, y ambos parecen ser correctamente big endian (como se muestra en el ejemplo). – Grhm
Sí, los últimos 8 bytes se muestran como 2-6 en la representación de cadena, probablemente por razones de legibilidad pero son parte de la misma parte de datos. La verdadera pregunta es si Guid está violando el estándar o si hay alguna otra explicación. – Stilgar