c++ - boost uuid + boost 字节序

标签 c++ boost

我需要将 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/

相关文章:

c++ - boost_multi 数组太大? bad_alloc 错误

c++ - ArticxEngine.exe : 0xC0000005: Access violation writing location 0x00000004 中 0x777122D2 (ntdll.dll) 的未处理异常

c++ - 是否可以在nodejs或golang中使用Visual C++ MFC函数插件?

c++ - 如何为我的图形提供 vertex_index 属性

c++ - 通过仿函数断开 boost 信号 2 连接

c++ - 如何获取所有子节点值

c++ - GetComputerNameW 导致 Windows 10 中的缓冲区溢出

C++ 有一个嵌套类继承自另一个嵌套类

c++ - 类模板实例化中的类型转换

ubuntu - 如何在 Ubuntu 10.04 上安装 boost 1.40?