web-dev-qa-db-ja.com

GUIDには何文字ありますか?

ASCIIエンコーディングを使用すると、GUIDにはいくつの文字がありますか?

中括弧とダッシュを含むMicrosoftスタイルに興味があります。

71
Jim Counts

[〜#〜] msdn [〜#〜] から:

GUIDは、8桁の16進数の1つのグループと、それに続く4桁の16進数の3つのグループ、および12桁の16進数の1つのグループで構成される128ビット値です。次の例GUIDは、GUIDの16進数字のグループ化を示しています:6B29FC40-CA47-1067-B31D-00DD010662DA

から ウィキペディア

多くの場合、上記の形式を囲むためにブレースが追加されます。

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

したがって、中括弧を使用した一般的な16進数エンコードでは合計38文字です。

-アダム

119
Adam Davis

TL; DR:なし。

Adam Davisが述べたように、MicrosoftスタイルはHEXエンコード(読みやすくするために波括弧とダッシュを使用)で、ASCII文字(0-9およびAF))のサブセットを使用して表示できますが、これは特にASCIIエンコーディングではありません。

MicrosoftのGUID表示スタイルはGUIDの表現にすぎず、実際には16バイトの整数値である(Micheal Trauschが述べたように)ことを覚えておくことが重要だと思います。

また、バイトを別の文字セット(ASCIIなど)に変換することにより、異なるコンパクトな方法で表示することもできます。

理論的には、各バイトを拡張ASCII文字(255文字)として表示できます。これにより、GUID= 16文字の文字列として保存できます。

ただし、空白文字(CR、スペース、タブなど)やその他の特殊文字が含まれるため、読みにくいでしょう。これは、GUIDを効率的に保存する場合にのみ意味があります。 =人間が読めない文字形式、たとえば、GUIDや小さなバイナリ値の高速マッチングをネイティブにサポートしていないデータベースの場合: http://en.wikipedia.org/wiki/Extended_ASCII =

IMHO GUIDよりコンパクトに表示する最も読みやすい方法は、Base64エンコーディングを使用することです。これにより、22文字の長さの文字列に保存でき、次のようになります。 :

7v26IM9P2kmVepd7ZxuXyQ==

しかし、Jeff Atwoodが彼のサイトで述べているように、GUID=を20文字のASCII85エンコード文字列にプッシュすることもできます。

[Rb*hlkkXVW+q4s(YSF0

より多くのインスピレーションについては、以下を参照してください: http://www.codinghorror.com/blog/2005/10/equipping-our-ascii-armor.html

28
Wiebe Tijsma

AdamがMSDNの引用で述べたように、UUIDは128ビット値です。これは、値を保持するためにRAMの16バイトを必要とすることを意味します。テキスト表現は、32バイト(各シングルバイトにつき2バイト)、4つのハイフン、および2つのブラケットそれらを含めたい;これは38バイトになります。

ソフトウェアのユーザーにUUIDを公開している場合、ブラケットの有無にかかわらずUUIDが提供される可能性があることに注意してください。値をどこかに保存する場合は、16バイトのバイナリ表現として保存するのが最適です。他のUUID実装と相互運用している場合は、バイナリUUID値を格納するときに実装によってバイトの順序が異なるため、相互運用性のために基本的なテキスト形式を使用することができます。

12
Michael Trausch

長さはエンコーディングによって異なります。このスニペットで標準のエンコーディングと長さを取得できます:

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

詳細については、 Guid.ToStringメソッド を参照してください:

5
MovGP0