当您在.NET中的GUID上调用ToByteArray()
时,与GUID的字符串表示形式相比,结果数组中字节的顺序不是您所期望的。例如,对于以下表示为字符串的GUID:
11223344-5566-7788-9900-aabbccddeeff
ToByteArray()
的结果是:
44, 33, 22, 11, 66, 55, 88, 77, 99, 00, AA, BB, CC, DD, EE, FF
请注意,前四个字节的顺序是相反的。字节4和5也交换,字节6和7交换。但最后的8个字节的顺序与它们在字符串中的表示顺序相同。
我知道这种情况正在发生。我想知道的是.NET为什么会这样处理它。
答案 0 :(得分:29)
如果您阅读Examples section from the GUID constructor,您会找到答案:
Guid(1,2,3,new byte[]{0,1,2,3,4,5,6,7})
创建一个与"00000001-0002-0003-0001-020304050607"
对应的Guid。
a
是32位整数,b
是16位整数,c
是16位整数,d
只是8个字节。
因为a
,b
和c
是整数类型而不是原始字节,所以在选择显示它们时,它们会受到字节顺序的影响。 RFC for GUID's (RFC4122)表示它们应以大端格式呈现。