十六进制到int C#,非常大的数字

时间:2011-06-27 20:03:49

标签: c# biginteger valueconverter

我有一个包含十六进制值的256个字符长字符串:

  

EC851A69B8ACD843164E10CFF70CF9E86DC2FEE3CF6F374B43C854E3342A2F1AC3E30C741CC41E679DF6D07CE6FA3A66083EC9B8C8BF3AF05D8BDBB0AA6CB3EF8C5BAA2A5E531BA9E28592F99E0FE4F95169A6C63F635D0197E325C5EC76219B907E4EBDCD401FB1986E4E3CA661FF73E7E2B8FD9988E753B7042B2BBCA76679

我想将其转换为具有以下数字的字符串:

  

102721434037452409244947064576168505707480035762262934026941212181473785225928879178124028140134582697986427982801088884553965371786856967476796072433168989860379885762727214550528198941038582937788145880903882293999022181847665735412629158069472562567144696160522107094738216218810820997773451212693036210879

如此大的数字怎么办?

提前致谢。

2 个答案:

答案 0 :(得分:21)

使用BigInteger。具体来说,您可以使用BigInteger.Parse将十六进制表示形式解析为BigInteger的实例(使用NumberStyles.HexNumber),然后使用BigInteger.ToString来获取十进制表示。

var number = BigInteger.Parse(
    "EC851A69B8ACD843164E10CFF70CF9E86DC2FEE3CF6F374B43C854E3342A2F1AC3E30C741CC41E679DF6D07CE6FA3A66083EC9B8C8BF3AF05D8BDBB0AA6CB3EF8C5BAA2A5E531BA9E28592F99E0FE4F95169A6C63F635D0197E325C5EC76219B907E4EBDCD401FB1986E4E3CA661FF73E7E2B8FD9988E753B7042B2BBCA76679",
    NumberStyles.HexNumber
);
var s = number.ToString();

答案 1 :(得分:2)

使用System.Numerics.BigInteger存储号码。要获得它,请使用BigInteger.Parse NumberFlags值设置AllowHexSpecifier。 (例如NumberFlags.HexNumber