Pregunta

Con la codificación ASCII, ¿cuántos caracteres hay en un GUID?

Me interesa el estilo de Microsoft, que incluye los corchetes y los guiones.

¿Fue útil?

Solución

De MSDN :

  

Un GUID es un valor de 128 bits que consiste   de un grupo de 8 dígitos hexadecimales,   seguido de tres grupos de 4   dígitos hexadecimales cada uno, seguido de   Un grupo de 12 dígitos hexadecimales.   El siguiente ejemplo de GUID muestra la   agrupaciones de dígitos hexadecimales en una   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}

Un total de 38 caracteres en la codificación hexadecimal típica con llaves.

-Adam

Otros consejos

TL; DR: Ninguno.

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 esto no es específicamente la codificación ASCII .

Supongo que es importante recordar que el estilo de microsoft de visualización de GUID es solo una representación de un GUID, que en realidad es un valor integral de 16 bytes (como lo indicó Micheal Trausch).

También puede presentarlo de formas diferentes y más compactas al convertir 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.

No sería muy legible, ya que 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 un GUID de manera eficiente en un espacio no humano. formato de caracteres legibles, por ejemplo, en una base de datos que no admite GUID de forma nativa o una rápida comparación de valores binarios pequeños: 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 ver así:

7v26IM9P2kmVepd7ZxuXyQ==

Pero como indica 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 más inspiración, ver: http://www.codinghorror.com/blog/ 2005/10 / equipping-our-ascii-armor.html

Como Adam mencionó en la cita de MSDN, los UUID son valores de 128 bits. Esto significa que toman 16 bytes de RAM para mantener un valor. Una representación de texto tomará 32 bytes (dos bytes para cada byte), 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, pueden proporcionar el UUID con o sin los paréntesis. Si está almacenando el valor en cualquier lugar, es mejor almacenarlo como la representación binaria de 16 bytes. Si está interactuando con otras implementaciones UUID, es posible que desee utilizar el formato de texto básico para la interoperabilidad, ya que las implementaciones diferentes hacen cosas diferentes al orden de los bytes al almacenar un valor UUID binario.

La longitud depende de la codificación. Puede obtener las codificaciones y longitudes estándar con este fragmento de código:

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);
}

vea Guid.ToString Method para detalles:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top