gpt4 book ai didi

guid - GUID 和 UUID 之间有什么区别吗?

转载 作者:行者123 更新时间:2023-12-03 03:51:58 33 4
gpt4 key购买 nike

我看到这两个首字母缩略词被抛出,我想知道 GUID 和 UUID 之间是否有任何区别?

最佳答案

简单回答是:**没有区别,它们是同一个东西。
2020-08-20 更新 :虽然 GUID(由 Microsoft 使用)和 UUID(由 RFC4122 定义)看起来相似且用途相似,但存在细微但偶尔重要的差异。具体来说,some Microsoft GUID docs允许 GUID 在任何位置包含任何十六进制数字,而 RFC4122 要求 version 的某些值和 variant领域。此外,[每个相同的链接],GUID 应该全部大写,而 UUID should be “输出为小写字符,输入时不区分大小写”。这可能会导致代码库之间的不兼容 ( such as this )。
(原答案如下)

将它们视为用作唯一值的 16 字节(128 位)值。在 Microsoft 语言中,它们被称为 GUID,但在不使用 Microsoft 语言时称为 UUID。
甚至 UUID 规范的作者和微软也声称它们是同义词:

  • 从介绍到IETF RFC 4122 “A Universally Unique IDentifier (UUID) URN Namespace”:“UUID(Universally Unique IDentifier)的统一资源名称命名空间,也称为GUID(Globally Unique IDentifier)。”
  • 来自 ITU-T Recommendation X.667, ISO/IEC 9834-8:2004 International Standard :“UUID 也称为全局唯一标识符 (GUID),但本建议书中未使用该术语。”
  • 甚至微软claims UUID RFC 指定了 GUID:“在 Microsoft Windows 编程和 Windows 操作系统中,[RFC4122] 中指定的全局唯一标识符 (GUID) 是......术语通用唯一标识符 (UUID) 有时被使用在 Windows 协议(protocol)规范中作为 GUID 的同义词。”

  • 但是 正确答案取决于问题在说“UUID”时的含义......
    第一部分取决于提问者在说“UUID”时的想法。
    Microsoft 的声明暗示所有 UUID 都是 GUID。但是所有的 GUID 都是真正的 UUID 吗?也就是说,所有 UUID 的集合只是所有 GUID 集合的适当子集,还是完全相同的集合?
    查看 RFC 4122 的详细信息,UUID 有四种不同的“变体”。这主要是因为在创建 UUID 规范时将这些规范结合在一起之前就使用了此类 16 字节标识符。来自 RFC 4122 的第 4.1.1 节,UUID 的四种变体是:
  • 保留,网络计算系统向后兼容
  • RFC 4122 中指定的变体(其中有五个子变体,称为“版本”)
  • 保留,微软公司向后兼容
  • 保留以供将来定义。

  • 根据 RFC 4122,所有 UUID 变体都是“真实的 UUID”,那么所有的 GUID 都是真实的 UUID。对于字面问题“GUID 和 UUID 之间有什么区别”,RFC 4122 UUID 的答案绝对是否定的: 没有区别 (但以下面的第二部分为准)。
    但并非所有 GUID 都是变体 2 UUID(例如,Microsoft COM 的 GUID 是变体 3 UUID)。如果问题是“GUID 和变体 2 UUID 之间有什么区别”,那么答案是肯定的——它们可以不同。问这个问题的人可能不知道变体,当他们说“UUID”这个词时,他们可能只考虑变体 2 UUID(例如,他们模糊地知道 MAC 地址+时间和 UUID 的随机数算法形式,其中都是变体 2) 的两个版本。在这种情况下,答案是 是的不同 .
    因此,答案部分取决于提问者在说出“UUID”一词时的想法。他们是指变体 2 UUID(因为这是他们知道的唯一变体)还是所有 UUID?
    第二部分取决于用作 UUID 定义的规范。
    如果您认为这令人困惑,请阅读 ITU-T X.667 ISO/IEC 9834-8:2004它应该与 RFC 4122 对齐并在技术上完全兼容.它在第 11.2 条中有一个额外的句子,说“所有符合本建议书 | 国际标准的 UUID 都应具有变体位,其中八位位组 7 的第 7 位设置为 1,八位位组 7 的位 6 设置为 0”。这意味着只有变体 2 UUID 符合该标准(这两个位值表示变体 2)。如果这是真的,那么并非所有 GUID 都符合 ITU-T/ISO/IEC UUID,因为符合 ITU-T/ISO/IEC UUID 只能是变体 2 值。
    因此,真正的答案还取决于问题所询问的 UUID 规范。假设我们清楚地谈论所有 UUID 而不仅仅是变体 2 UUID:有 没有区别 GUID 和 IETF 的 UUID 之间,但是 是差异 GUID 和符合 ITU-T/ISO/IEC 的 UUID 之间!
    二进制编码可能不同
    当以二进制编码(与人类可读的文本格式相反)时,GUID may be stored在具有四个不同字段的结构中,如下所示。此格式不同于 [UUID 标准] 8仅按前 3 个字段的字节顺序排列。
    Bits  Bytes Name   Endianness  Endianness
    (GUID) RFC 4122

    32 4 Data1 Native Big
    16 2 Data2 Native Big
    16 2 Data3 Native Big
    64 8 Data4 Big Big

    关于guid - GUID 和 UUID 之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/246930/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com