2009-11-20 14 views
6

GUIDとランダムデータを区別できることは、不明瞭なコードの欠陥をデバッグする際に役立ちます。GUIDと単なる乱数を区別する方法はありますか?

Windowsでは、生成される各GUIDはバージョン4です。したがって、3番目の部分の最初の半分のバイトとして '4'があります。したがって、16バイトのシーケンスがそのルールを違反する場合、それはバージョン4のGUIDではありません。例えば、

567E1ECB-EA1C-42D3-A3ED-87A5D824D167 

は、バージョン4 GUIDまたは何か他のもののいずれかであるが、

567E1ECB-EA1C-02D3-A3ED-87A5D824D167 //third section starts with 0, not with 4 

はバージョン4 GUIDではありません。

有効なGUIDであるかどうかの16バイトメモリブロックの他の兆候は何ですか?あなたが定義のための

チェックウィキペディア(などすなわち「X」、「Y」は、有効ではありません)が含まれているものの文字チェックすることができ、あなたはおそらくそこより多くのアイデアを見つけることができるように

答えて

1

GUID版(0100)のほかに、GUIDのバリアントと呼ばれるものもあります。これはオクテット8で2ビット(10)になります.v4 GUIDの残りのビットaは定義上ランダムです。

+0

すべてのGUIDで、オクテット8の最初の2ビットは "10"でなければならないのですか? – sharptooth

+0

実際には、オクテット8の3つの最上位ビットがあり、 '000'、 '010'、 '110'、または '111'になります。標準的なものは「010」ですが、同じ方法で生成されたGUIDの場合、これらのビットは常に同じ値を持ちます。 – configurator

+0

申し訳ありませんが、私はオクテット10を意味しました。 – configurator

関連する問題