gpt4 book ai didi

.net - .NET 中的引导字节顺序

转载 作者:行者123 更新时间:2023-12-02 17:43:35 25 4
gpt4 key购买 nike

我正在创建一个像这样的 GUID

Guid g = new Guid(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF });
Console.WriteLine(g);

此输出

03020100-0504-0706-0809-0a0b0c0d0e0f

根据Wikipedia GUID 中有四个部分,这解释了为什么字节顺序在四组中切换。然而,维基百科文章还指出所有部分都以 Big Endian 格式存储。显然前三部分不是Big Endian。 guid 的 GetBytes() 方法以与创建时使用的顺序完全相同的顺序返回字节。这种行为的解释是什么?

最佳答案

MS 似乎将这五个部分存储在一个结构中。前 4 部分的长度为 2 或 4 个字节,因此可能以小端格式存储为 native 类型(即 WORD 和 DWORD)。最后一部分有 6 个字节长,因此处理方式不同(可能是一个数组)。

规范是否规定 GUID 按大端顺序存储,或者部分存储按该顺序但各个部分可能是特定于实现的?

编辑:

来自UUID spec ,第 4.1.2 节。布局和字节顺序(强调我的):

To minimize confusion about bit assignments within octets, the UUID
record definition is defined only in terms of fields that are
integral numbers of octets. The fields are presented with the most
significant one first.

...

In the absence of explicit application or presentation protocol
specification to the contrary
, a UUID is encoded as a 128-bit object,as follows:

The fields are encoded as 16 octets, with the sizes and order ofthe fields defined above, and with each field encoded with the MostSignificant Byte first (known as network byte order).

可能是 MS 以正确的顺序存储了字节,但没有费心去网络到主机排序 WORD 和 DWORD 部分以进行演示(根据规范,至少在我看来,这似乎没问题)不熟练的阅读。)

关于.net - .NET 中的引导字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10190817/

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