Ile znaków zawiera identyfikator GUID przy użyciu kodowania ASCII?
Interesuje mnie styl Microsoftu, który obejmuje nawiasy klamrowe i myślniki.
Ile znaków zawiera identyfikator GUID przy użyciu kodowania ASCII?
Interesuje mnie styl Microsoftu, który obejmuje nawiasy klamrowe i myślniki.
Odpowiedzi:
Z MSDN :
Identyfikator GUID to 128-bitowa wartość składająca się z jednej grupy 8 cyfr szesnastkowych, po której następują trzy grupy po 4 cyfry szesnastkowe każda, po których następuje jedna grupa 12 cyfr szesnastkowych. Poniższy przykładowy identyfikator GUID przedstawia grupy cyfr szesnastkowych w identyfikatorze GUID: 6B29FC40-CA47-1067-B31D-00DD010662DA
Z Wikipedii :
Często dodawane są nawiasy klamrowe, aby ująć powyższy format, na przykład:
{3F2504E0-4F89-11D3-9A0C-0305E82C3301}
Łącznie 38 znaków w typowym kodowaniu szesnastkowym z nawiasami klamrowymi.
-Adam
Jak stwierdził Adam Davis, styl firmy Microsoft to kodowanie HEX (z nawiasami klamrowymi i myślnikami, aby było bardziej czytelne), które można wyświetlić za pomocą podzbioru znaków ASCII (0-9 i AF), ale nie jest to specjalnie kodowanie ASCII.
Myślę, że ważne jest, aby pamiętać, że styl wyświetlania identyfikatorów GUID firmy Microsoft jest tylko reprezentacją identyfikatora GUID, który jest w rzeczywistości 16-bajtową wartością całkowitą (jak stwierdził Micheal Trausch).
Możesz również przedstawić to na inne, bardziej zwarte sposoby, konwertując bajty na inny zestaw znaków (np. ASCII).
Teoretycznie można wyświetlić każdy bajt jako rozszerzony znak ASCII (255 znaków), co pozwoliłoby na zapisanie identyfikatora GUID jako ciągu o długości 16 znaków.
Nie byłby jednak zbyt czytelny, ponieważ zawierałby znaki spacji (CR, spacja, tabulator itp.) I inne znaki specjalne, więc miałoby to sens tylko wtedy, gdy chcesz efektywnie zapisać identyfikator GUID w formacie nieczytelnym dla człowieka , na przykład w bazie danych, która nie obsługuje natywnie identyfikatorów GUID lub szybkiego dopasowywania małych wartości binarnych: http://en.wikipedia.org/wiki/Extended_ASCII
IMHO najbardziej czytelnym sposobem wyświetlania bardziej zwartego identyfikatora GUID byłoby użycie kodowania Base64, które pozwala zapisać go w ciągu o długości 22 znaków i sprawiłoby, że wyglądałby tak:
7v26IM9P2kmVepd7ZxuXyQ==
Ale, jak twierdzi Jeff Atwood na swojej stronie, możesz również umieścić GUID w łańcuchu zakodowanym w ASCII85 z 20 znakami:
[Rb*hlkkXVW+q4s(YSF0
Więcej inspiracji znajdziesz na: http://www.codinghorror.com/blog/2005/10/equipping-our-ascii-armor.html
Jak wspomniał Adam w cytacie z MSDN, identyfikatory UUID to wartości 128-bitowe. Oznacza to, że do przechowywania wartości zajmują 16 bajtów pamięci RAM. Reprezentacja tekstowa zajmie 32 bajty (dwa bajty na każdy pojedynczy bajt) plus 4 łączniki plus dwa nawiasy, jeśli chcesz je uwzględnić; to wynosi 38 bajtów.
Pamiętaj tylko, że jeśli ujawniasz identyfikatory UUID użytkownikom swojego oprogramowania, mogą oni podać identyfikator UUID w nawiasach lub bez. Jeśli przechowujesz wartość w dowolnym miejscu, najlepiej zapisać ją jako 16-bajtową reprezentację binarną. Jeśli współdziałasz z innymi implementacjami UUID, możesz chcieć użyć podstawowego formatu tekstowego do współdziałania, ponieważ różne implementacje robią różne rzeczy w kolejności bajtów podczas przechowywania binarnej wartości UUID.
Długość zależy od kodowania. Możesz uzyskać standardowe kodowanie i długość za pomocą tego fragmentu:
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);
}
Aby uzyskać szczegółowe informacje, zobacz metodę Guid.ToString :