正在将十六进制字符串解析为以10为基数的长整数

本文关键字:长整数 十六进制 字符串 | 更新日期: 2023-09-27 17:58:03

我需要解析一个以10为基数的十六进制值。值类似于:

 9F2EEA4AA03D55B33172E9A86CFF6156AC1628C67983193A337B98995151F9B0F41562290DB98697280E805803E4B18914519CEB55CEA5D03A927C28C36A4BC7

我该怎么做?

更新:

在python中,我使用了以下内容:

>> num = "9F2EEA4AA03D55B33172E9A86CFF6156AC1628C67983193A337B98995151F9B0F41562290DB98697280E805803E4B18914519CEB55CEA5D03A927C28C36A4BC7"
>> int(num, 16)
>> 8337103942674051648235321365669510487642415361796636721089378763661406518267124809778145800381557738780272231500412167743930433352841689114003303823985607L

当我的同事尝试@Sergey的答案时,我的同事得到了不同的结果(负值,而我的不是负值)

>> BigInteger bigInteger = BigInteger.Parse(num, NumberStyles.HexNumber);
>> -5070703987268545451338703632536335639836950458795756656634182680060357511806422167023728497785345688909759626686073883109823449459104880832430345182098489

正在将十六进制字符串解析为以10为基数的长整数

请查看BigInteger结构以处理大整数。

BigInteger bigInteger = BigInteger.Parse("0D574F480A03D55B33172E9A86CFF6156AC1628C67983193A337B98995151F9B0F41562290DB98697280E805803E4B18914519CEB55CEA5D03A927C28C36A4BC7", NumberStyles.HexNumber);
string s = bigInteger.ToString(); // String with decimal representation.

更新

如果数字应被解释为正,则即使字符串的第一个字符是8–F,也应以0开头。参见上面的示例:0D574...