【发布时间】:2018-06-04 11:10:41
【问题描述】:
我需要将 guid 转换为大整数.. 这很好,但在测试期间我强调了一些我需要向我解释的内容;)
如果我执行以下操作:
var g = Guid.NewGuid(); // 86736036-6034-43c5-9b85-1c833837dbea
var p = g.ToByteArray();
var x = new BigInteger(p); // -28104782885366703164142972435490971594
但如果我在 python 中执行此操作.. 我会得到不同的结果:
import uuid
x = uuid.UUID('86736036-6034-43c5-9b85-1c833837dbea')
print x
print x.int # 178715616993326703606264498842288774122
有更好的python知识和.net知识的人可以帮忙解释一下吗?
【问题讨论】:
-
我应该学会阅读问题
-
看来C#代码把它当成有符号整数了,我觉得没有意义。
-
我之前的说法得到The Docs的证实:“构造函数期望字节数组中的正值使用符号和大小表示,负值使用二进制补码表示。在换句话说,如果设置了 value 中最高字节的最高位,则生成的 BigInteger 值为负。"
-
this 有帮助吗?
-
GUID.ToByte()确实 not 保留顺序,它与 python 不兼容,因为 python 的GUID.hexdoes 保留字节顺序
标签: c# python-2.7