C#将十六进制字符串转换为十进制。为什么是负值?

C#将十六进制字符串转换为十进制。为什么是负值?,c#,C#,下面某些值的十六进制->十进制代码返回负值 f、 x HEX:a4ddfc12应该是:2766011410,但C#出于某种原因返回:-1528955886 代码: 如果我使用这个,它将是相同的: WriteLine(Int32.Parse(Convert.ToInt32(myHexStr,16.ToString()) 预计得到:2766011410该数字太大,无法放入32位整数,最大值为2147483647,并且 请改用64位整数: string myHexStr = "a4ddfc12";

下面某些值的十六进制->十进制代码返回负值

f、 x HEX:a4ddfc12应该是:2766011410,但C#出于某种原因返回:-1528955886

代码:

如果我使用这个,它将是相同的: WriteLine(Int32.Parse(Convert.ToInt32(myHexStr,16.ToString())


预计得到:2766011410

该数字太大,无法放入32位整数,最大值为2147483647,并且

请改用64位整数:

string myHexStr = "a4ddfc12";

Console.WriteLine(Int64.Parse(myHexStr, NumberStyles.HexNumber).ToString());  // 2766011410

如果我们使用此选项,它将正确转换:您是否尝试过以“0x”开头十六进制字符串?您得到的值是“带符号2的补码的十进制数”。
string myHexStr = "a4ddfc12";

Console.WriteLine(Int64.Parse(myHexStr, NumberStyles.HexNumber).ToString());  // 2766011410