我可以一直重现这 1 行&我不明白为什么 .Net 8 x64 会转换为负小数。由于十六进制大小,必须使用 BigInteger。 转换 URL 事实检查 .Net BigInteger.Parse
BigInteger.Parse("D0752364CFB600E410619304BE135C", System.Globalization.NumberStyles.HexNumber).ToString()
2 示例:
& 我的列表中还有错误的 .Net BigInteger.Parse 问题。就是涉及 1 行。
周围有人有什么建议吗?
我有解决方法,但我不喜欢马虎的创可贴
这是记录的行为:
如果 value 是十六进制字符串,并且前两个十六进制数字大于或等于 0x80,则
方法将 value 解释为使用二进制补码表示形式存储的负数。换句话说,该方法将值中第一个字节的最高位解释为符号位。为了确保将十六进制字符串正确解释为正数,值中的第一个数字必须为零。例如,该方法将 0x80 解释为负值,但它将 0x080 或 0x0080 解释为正值。Parse(String, NumberStyles)
所以该方法按照记录的方式工作,只是不是您希望的工作方式。如果您希望该值始终被解释为正值,只需在前面添加“0”即可。