Usando la codificación ASCII, ¿cuántos caracteres hay en un GUID?
Me interesa el estilo de Microsoft, que incluye las llaves y los guiones.
Usando la codificación ASCII, ¿cuántos caracteres hay en un GUID?
Me interesa el estilo de Microsoft, que incluye las llaves y los guiones.
Respuestas:
Desde MSDN :
Un GUID es un valor de 128 bits que consta de un grupo de 8 dígitos hexadecimales, seguido de tres grupos de 4 dígitos hexadecimales cada uno, seguidos de un grupo de 12 dígitos hexadecimales. El siguiente ejemplo de GUID muestra las agrupaciones de dígitos hexadecimales en un GUID: 6B29FC40-CA47-1067-B31D-00DD010662DA
De Wikipedia :
A menudo se agregan llaves para encerrar el formato anterior, como tal:
{3F2504E0-4F89-11D3-9A0C-0305E82C3301}
Entonces, un total de 38 caracteres en la codificación hexadecimal típica con llaves.
-Adán
Como dijo Adam Davis, el estilo de Microsoft es la codificación HEX (con llaves y guiones para que sea más legible) que se puede mostrar usando un subconjunto de caracteres ASCII (0-9 y AF), pero esta no es específicamente codificación ASCII.
Supongo que es importante recordar que el estilo de microsoft de mostrar GUID es solo una representación de un GUID, que en realidad es un valor integral de 16 bytes (como dijo Micheal Trausch).
También puede presentarlo de formas diferentes y más compactas convirtiendo los bytes en un conjunto de caracteres diferente (como ASCII).
En teoría, puede mostrar cada byte como un carácter ASCII extendido (255 caracteres), lo que le permitiría guardar un GUID como una cadena de 16 caracteres.
Sin embargo, no sería muy legible porque incluiría caracteres de espacio en blanco (CR, espacio, tabulación, etc.) y otros caracteres especiales, por lo que esto solo tendría sentido si desea guardar de manera eficiente un GUID en un formato de carácter no legible , por ejemplo, en una base de datos que no admite de forma nativa GUID o coincidencia rápida de pequeños valores binarios: http://en.wikipedia.org/wiki/Extended_ASCII
En mi humilde opinión, la forma más legible de mostrar un GUID más compacto sería usar la codificación Base64, que le permite guardarlo en una cadena con una longitud de 22 caracteres, y lo haría lucir así:
7v26IM9P2kmVepd7ZxuXyQ==
Pero como afirma Jeff Atwood en su sitio, también puede insertar un GUID en una cadena codificada en ASCII85 con 20 caracteres:
[Rb*hlkkXVW+q4s(YSF0
Para obtener más inspiración, consulte: http://www.codinghorror.com/blog/2005/10/equipping-our-ascii-armor.html
Como mencionó Adam en la cita de MSDN, los UUID son valores de 128 bits. Esto significa que necesitan 16 bytes de RAM para mantener un valor. Una representación de texto ocupará 32 bytes (dos bytes por cada byte individual), más los 4 guiones, más los dos corchetes si desea incluirlos; esto equivale a 38 bytes.
Solo tenga en cuenta que si está exponiendo los UUID a los usuarios de su software, ellos pueden proporcionar el UUID con o sin los corchetes. Si está almacenando el valor en cualquier lugar, es mejor almacenarlo como la representación binaria de 16 bytes. Si está interoperando con otras implementaciones de UUID, es posible que desee utilizar el formato de texto básico para la interoperabilidad, ya que diferentes implementaciones hacen cosas diferentes en el orden de los bytes al almacenar un valor de UUID binario.
La longitud depende de la codificación. Puede obtener la codificación y la longitud estándar con este fragmento:
public void Main()
{
var guid = Guid.Empty;
Write(guid, "N"); // 32 characters
Write(guid, "D"); // 36 characters (default)
Write(guid, "B"); // 38 characters
Write(guid, "P"); // 38 characters
Write(guid, "X"); // 68 characters
}
private void Write(Guid guid, string format)
{
var guidString = guid.ToString(format);
Console.WriteLine("{0}: {1} ({2} characters)", format, guidString, guidString.Length);
}
Consulte el método Guid.ToString para obtener más detalles: