我正在使用Python中的uuid包。RFC 4122指出:“UUID记录定义仅根据是八位字节的整数字段来定义。”但是当我尝试使用bytes和bytes_le更改字节顺序时,我发现并非所有uuid字段都被转换:
在上面的输出中,可以看到最后8个字节不管UUID表示的字节顺序如何都不会改变。
现在,假设目标机器是小端字节序,我们收到的UUID按照RFC定义是大端字节顺序,需要将其转换为内部表示,即根据平台表示解析其字段为整数。
我应该反转哪些字节?只反转时间低、时间中和时间高以及版本,并保持时钟序和节点不变吗?
>>> 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<<'
在上面的输出中,可以看到最后8个字节不管UUID表示的字节顺序如何都不会改变。
现在,假设目标机器是小端字节序,我们收到的UUID按照RFC定义是大端字节顺序,需要将其转换为内部表示,即根据平台表示解析其字段为整数。
我应该反转哪些字节?只反转时间低、时间中和时间高以及版本,并保持时钟序和节点不变吗?