Domanda

Utilizzando la codifica ASCII, quanti caratteri ci sono in un GUID?

Sono interessato allo stile Microsoft, che include parentesi graffe e trattini.

È stato utile?

Soluzione

Da MSDN :

  

Un GUID è un valore a 128 bit consistente   di un gruppo di 8 cifre esadecimali,   seguito da tre gruppi di 4   cifre esadecimali ciascuna, seguite da   un gruppo di 12 cifre esadecimali.   Il seguente GUID di esempio mostra il   raggruppamenti di cifre esadecimali in a   GUID:   6B29FC40-ca47-1067-B31D-00dd010662da

Da Wikipedia :

  

Spesso vengono aggiunte parentesi graffe per racchiudere il file   sopra, come tale:

{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

Quindi un totale di 38 caratteri nella tipica codifica esadecimale con parentesi graffe.

-Adam

Altri suggerimenti

TL; DR: nessuno.

Come affermato da Adam Davis, lo stile Microsoft è la codifica HEX (con parentesi graffe e trattini per renderlo più leggibile) che può essere visualizzata utilizzando un sottoinsieme di caratteri ASCII (0-9 e AF), ma questa non è specificamente la codifica ASCII .

Immagino sia importante ricordare che lo stile microsoft di visualizzare i GUID è solo una rappresentazione di un GUID, che in realtà è un valore integrale di 16 byte (come affermato da Micheal Trausch).

Puoi anche presentarlo in modi diversi e più compatti convertendo i byte in un set di caratteri diverso (come ASCII).

Teoricamente puoi visualizzare ogni byte come un carattere ASCII esteso (255 caratteri), che ti permetterebbe di salvare un GUID come una stringa di 16 caratteri.

Non sarebbe molto leggibile, perché includerebbe caratteri di spazi bianchi (CR, spazio, tab, ecc.) e altri caratteri speciali, quindi questo avrebbe senso solo se si desidera salvare in modo efficiente un GUID in un non umano formato di caratteri leggibile, ad esempio in un database che non supporta in modo nativo GUID o corrispondenza rapida di piccoli valori binari: http://en.wikipedia.org/wiki/Extended_ASCII

IMHO il modo più leggibile per visualizzare un GUID più compatto sarebbe usare la codifica Base64, che ti permette di salvarlo in una stringa con una lunghezza di 22 caratteri, e lo farebbe apparire così:

7v26IM9P2kmVepd7ZxuXyQ==

Ma come afferma Jeff Atwood sul suo sito, puoi anche inserire un GUID in una stringa codificata ASCII85 con 20 caratteri:

[Rb*hlkkXVW+q4s(YSF0

Per più ispirazione, vedi: http://www.codinghorror.com/blog/ 2005/10 / equipaggiare-nostro-ascii-armor.html

Come Adam ha citato dalla citazione MSDN, gli UUID sono valori a 128 bit. Ciò significa che richiedono 16 byte di RAM per contenere un valore. Una rappresentazione di testo richiederà 32 byte (due byte per ogni singolo byte), più i 4 trattini, più le due parentesi se si desidera includerli; questo ammonta a 38 byte.

Tieni presente che se stai esponendo gli UUID agli utenti del tuo software, questi potrebbero fornire l'UUID con o senza parentesi. Se stai memorizzando il valore ovunque, è meglio memorizzarlo come rappresentazione binaria a 16 byte. Se stai interagendo con altre implementazioni UUID, potresti voler utilizzare il formato di testo di base per l'interoperabilità, poiché diverse implementazioni fanno cose diverse nell'ordine dei byte quando memorizzano un valore UUID binario.

La lunghezza dipende dalla codifica. Puoi ottenere le codifiche e la lunghezza standard con questo frammento:

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

consulta il Metodo Guid.ToString per dettagli:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top