如何在C#中转换十六进制数和十进制数?
要从十进制转换为十六进制,请...
string hexValue = decValue.ToString("X");
要从十六进制转换为十进制,请执行...
int decValue = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
要么
int decValue = Convert.ToInt32(hexValue, 16);
十六进制 - >十进制:
Convert.ToInt64(hexValue, 16);
十进制 - >十六进制
string.format("{0:x}", decValue);
看起来你可以说
Convert.ToInt64(value, 16)
从十六进制中获取小数.
另一种方式是:
otherVar.ToString("X");
如果要在从十六进制转换为十进制数时获得最大性能,可以使用预先填充的十六进制到十进制值表的方法.
以下是说明该想法的代码.我的性能测试表明,它比Convert.ToInt32(...)快20%-40%:
class TableConvert { static sbyte[] unhex_table = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1 ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1 ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1 ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 }; public static int Convert(string hexNumber) { int decValue = unhex_table[(byte)hexNumber[0]]; for (int i = 1; i < hexNumber.Length; i++) { decValue *= 16; decValue += unhex_table[(byte)hexNumber[i]]; } return decValue; } }
从Geekpedia:
// Store integer 182 int decValue = 182; // Convert integer 182 as a hex in a string variable string hexValue = decValue.ToString("X"); // Convert the hex string back to the number int decAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);