0

PHPのみを使用してRFC4122の8ページで定義されているMACアドレスに基づいてバージョン1のUUIDを作成しようとしています。このサイトの別の回答は、法案に適合すると思われるこの実装を推奨しました。

このクラスの使用法を次のようにテストしています。

<?php
    echo UUID::generate(UUID::UUID_TIME, UUID::FMT_STRING, '000000000000');
?>

しかし、次の出力が得られます。

6c10f140-28c0-11e2-a210-303030303030

私の標準の理解は、ノード(最後の部分)は逐語的にMACアドレスでなければならないということです。ソースコードを見るとord()、アドレス自体を使用する代わりに、ノードを生成するために提供された文字列内の文字のASCII値を取得しているように見えますか?

仕様の理解が間違っていますか、それともコードが間違っていますか?

4

1 に答える 1

1

バイナリ形式で渡す必要があります。

echo UUID::generate(UUID::UUID_TIME, UUID::FMT_STRING, "\x00\x00\x00\x00\x00\x00");
//bfd4d7d0-28c2-11e2-b87b-000000000000

これが、ループが 6 回、6 バイト = 48 ビットになる理由です。

于 2012-11-07T10:03:57.067 に答える