85

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

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

4

4 に答える 4

133

MSDNから:

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

ウィキペディアから:

多くの場合、上記の形式を囲むために中括弧が追加されます。

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

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

-アダム

于 2009-03-03T19:02:05.040 に答える
34

TL;DR: なし。

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

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

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

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

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

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を参照してください。

于 2010-07-14T15:49:20.993 に答える
14

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

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

于 2009-03-03T19:06:38.197 に答える