【发布时间】:2018-12-19 04:52:01
【问题描述】:
我在 Python 中使用 uuid 包。 RFC 4122 说“UUID 记录定义仅根据以下字段定义 八位字节的整数。”。
但是,当我使用字节顺序(bytes 和 bytes_le)时,我可以看到并非所有 uuid 字段都被转换:
>>> hx(uuid.UUID("d535fc02-e74f-5015-b8c9-a3b89d760ecd").bytes_le)
b'02fc35d54fe71550>>THIS>>b8c9a3b89d760ecd<<'
>>> hx(uuid.UUID("d535fc02-e74f-5015-b8c9-a3b89d760ecd").bytes)
b'd535fc02e74f5015>>THIS>>b8c9a3b89d760ecd<<'
在上面的输出中可以看出,无论 UUID 表示的字节顺序如何,最后 8 个字节都不会改变。
现在,假设目标机器是 little-endian,我们以 big-endian 字节顺序(根据 RFC)接收 UUID,并且必须将其转换为内部表示,即根据平台将其字段解析为整数表示。
我应该反转哪些字节?我应该只反转 time low、time mid 和 time high 和版本,而时钟序列和节点保持不变?
【问题讨论】:
标签: python uuid endianness