如何将此Hex转换为整数?

时间:2012-11-22 10:09:18

标签: c# hex

这让我很困惑。在程序中由于某种未知原因,存储计数器以跟踪两个数据库之间的状态。这只是一个增量计数器。

代码存储此计数器:

byte[] counter;

当它存储在数据库中时,它会被渲染为这样的字符串......

0x00010471000001BF001F

我想写一个应用程序,告诉我一个人是否高于另一个,输入两个数字的数量是多少。但我不知道如何将这些数字转换为整数表示。

有人知道发生了什么,是否可能?

2 个答案:

答案 0 :(得分:4)

由于数字是20个十六进制数字(80位),因此无法存储在int(32位)或long(64位)中。您可以在.NET 4.0或更高版本上使用BigInteger。 (在.NET 4.0中,您必须添加对System.Numerics.dll的引用)

var bigint = new System.Numerics.BigInteger(counter)

正如Øyvind所指出的,上面需要以little-endian顺序的字节数组,即new byte [] {1,0,0,0,0,0,0,0,0,0,0,0, 0,0}将评估为1.如果需要,使用Array.Reverse解决此问题。

由于您将数字作为字符串,您应该使用BigInteger.Parse,但请注意,您必须从头开始修剪“0x”

var bigint = System.Numerics.BigInteger.Parse("00010471000001BF001F",
                 System.Globalization.NumberStyles.HexNumber,
                 System.Globalization.CultureInfo.InvariantCulture);

答案 1 :(得分:0)

基于this solution,您可以使用

int intNumber = int.Parse(counter,system.Globalization.NumberStyles.HexNumber);