格式化RFC 4122版本1 UUID的mac地址节点的正确方法是什么?

时间:2012-11-07 09:53:21

标签: php uuid

我正在尝试使用仅使用PHP在page 8 of RFC 4122上定义的mac地址创建版本1 UUID。本网站Another answer建议this实施,这似乎符合要求。

我正在测试此类的用法如下:

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

但我得到以下输出:

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

我对标准的理解是节点(最后一部分)应该是逐字的mac地址。看the source code它似乎使用了ord(),它看起来像获取字符串中的字符的ASCII值来生成节点而不是使用地址本身?

我对规范的理解是错误的还是代码错了?

1 个答案:

答案 0 :(得分:1)

您需要以二进制形式传递它:

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

这就是循环变为6次,6个字节= 48位的原因。