正在将十六进制字符串解析为以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
请查看BigInteger结构以处理大整数。
BigInteger bigInteger = BigInteger.Parse("0D574F480A03D55B33172E9A86CFF6156AC1628C67983193A337B98995151F9B0F41562290DB98697280E805803E4B18914519CEB55CEA5D03A927C28C36A4BC7", NumberStyles.HexNumber);
string s = bigInteger.ToString(); // String with decimal representation.
更新
如果数字应被解释为正,则即使字符串的第一个字符是8–F,也应以0开头。参见上面的示例:0D574...