从Active Directory中读取“objectGUID”属性在Windows中运行正常,但在Mono上我无法理解返回值。
在Windows,.NET Framework 4,64位架构上使用C#,该类型以System.Byte []形式返回,可轻松转换为Guid。这是返回的原始数据:
00000000h: 52 09 11 26 50 D2 5F 40 B0 DC 0C A7 06 4C E8 27
然而,在Mono 3.2.5,Ubuntu 13.10,64位架构上,该类型以System.String形式返回。这是返回的原始数据:
00000000h: 52 09 11 26 50 EF BF BD 5F 40 EF BF BD EF BF BD
00000010h: 0C EF BF BD 06 4C EF BF BD 27
我看到了EF BF BD序列的模式...
我能够看到它的另一种方式是显示实际的字节序列(将每个字符串转换为单声道的Int32),产生这个告诉输出:(左边是Windows,右边是单声道)
Win Mono
---- ----
82 82
9 9
17 17
38 38
80 80
210 65533
95 95
64 64
176 65533
220 65533
12 12
167 65533
6 6
76 76
232 65533
39 39
请注意,如果左边的数字是> = 100-ish,右边的数字会转换为65533? 事实:byte.MaxValue是255 事实:十六进制数100等于十进制数256(比byte.MaxValue高1) 事实十进制数100等于十六进制数64 不知道是否有任何相关内容......
我觉得数据存在,我只是无法弄清楚如何获得它。或者这可能只是一个Mono bug,而且数据总是会被完全破坏。
有什么想法吗?