C#将十六进制字符串转换为十进制。为什么是负值?
下面某些值的十六进制->十进制代码返回负值 f、 x HEX:a4ddfc12应该是:2766011410,但C#出于某种原因返回:-1528955886 代码: 如果我使用这个,它将是相同的: WriteLine(Int32.Parse(Convert.ToInt32(myHexStr,16.ToString())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";
预计得到: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