提升uuid + boost endian

时间:2015-08-12 23:16:11

标签: c++ boost

我需要将uuids放在我无法控制的内存中(指针传递给我(以文件为后盾)),但我必须确保我在给定指针处存储的内容将是便携式的,即我想使用boost :: endian来解决uuids的小端问题。可以将boost :: endian和boost:uuid结合起来吗?

2 个答案:

答案 0 :(得分:3)

您不必担心UUID的字节顺序。它们不被视为数值。它们只是16个字节的不透明块。您可以对UUID执行的唯一有意义的操作是比较是否相等。

答案 1 :(得分:3)

UUID的字节顺序很重要(与@Ferruccio相反)。 UUID的字节顺序可能因实现和平台而异。正如所讨论的here,UUID受RFC 4122管理,只有推荐 UUID以big-endian格式存储。

在特定的实现或协议中,是的,您可以进行字节比较。 (这是UUID的好处之一。)

例如:

  • RFC4122推荐使用big-endian,
  • boost :: uuid使用big-endian。
  • Microsoft API(例如CoCreateGUID)使用little-endian。
  • libuuid / uuidgen使用本机字节序。
  • Python uuid可以做大或小但你必须指定

所以是的,为了便携,您应该指定用于存储它们的字节顺序和字节交换,以便保持一致。