为什么二元Guids与通常的表示不同

Jad*_*ias 5 .net sqlite binary guid dblinq

我有以下Guid:

AAB13E97-449B-4D5B-BDE2-AC479C31B782
Run Code Online (Sandbox Code Playgroud)

使用System.Guid + DbLinq + SQLite存储它,以下字段将添加到数据库中.

973EB1AA-9B44-5B4D-BDE2-AC479C31B782
Run Code Online (Sandbox Code Playgroud)

(为清晰起见,添加了破折号)

我可以看到最后8个字节的顺序是相同的,并且3个第一组是相反的,但我不明白为什么.

Jad*_*ias 4

看看维基百科关于这个主题的文章,它说:

Data4 以与 GUID 文本编码中显示的顺序相同的顺序存储字节(见下文),但其他三个字段在小端系统(例如 Intel CPU)上相反。

所以我得出结论:

  • 这与所使用的 DBMS 或框架无关
  • 这取决于处理器架构
  • 这是设计使然

所以问题依然存在:

他们到底为什么要这样设计呢?

  • “他们到底为什么要这样设计?” - 我的猜测是,最初 V1 GUID 在 Data4 字段中保存 MAC 地址。历史上,big-endian 被定义为标准网络字节顺序,并用于许多与网络相关的事物,例如 IP 地址、MAC 地址等。 (5认同)