我需要将 uuid 放置在我无法控制的内存位置(一个指针传递给我(由文件支持的 shm)),但我必须确保我存储在给定指针处的内容是可移植,即我想使用 boost::endian 来为 uuid 确定小端。是否可以将 boost::endian 和 boost:uuid 结合起来?
最佳答案
UUID 的字节顺序很重要(与@Ferruccio 相反)。 UUID 的字节顺序可能因实现和平台而异。正如所讨论的here , UUID 受 RFC 4122 管理,它仅建议 UUID 以大端格式存储。
在特定的实现或协议(protocol)中,是的,您可以只进行字节比较。 (这是 UUID 的好处之一。)
例如:
- RFC4122推荐big-endian,
- boost::uuid 使用 big-endian。
- Microsoft API(例如 CoCreateGUID)使用小尾数法。
- libuuid/uuidgen 使用 native 字节顺序。
- Python uuid可大可小,但必须说明
所以是的,为了便于携带,您应该指定您使用什么字节序来存储它们并根据需要进行字节交换以保持一致。
关于c++ - boost uuid + boost 字节序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31976983/