0

我正在尝试根据仅使用 PHP的 RFC 4122 第 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 回答