我正在尝试使用仅使用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值来生成节点而不是使用地址本身?
我对规范的理解是错误的还是代码错了?
答案 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位的原因。