将字符串值转换为十六进制数

6

我正在使用C#制作应用程序。在该实现中,我有一个包含十进制值的字符串:

string number="12000"; 

12000的十六进制等价值为0x2EE0。

在这里,我想将该十六进制值分配给整数变量,如下:

int temp=0x2EE0.

请帮我将那个数字转换一下。 提前致谢。


int temp = int.Parse(number); 这个整型变量将会拥有相同的值,无论你是赋予它一个十进制数还是一个十六进制数。也许你想要得到十六进制字符串,可以这样做:string hexStr = int.Parse(number).ToString("X"); - Julian
请查看http://www.geekpedia.com/KB8_How-do-I-convert-from-decimal-to-hex-and-hex-to-decimal.html,该网站涉及十进制和十六进制之间的转换。 - shakib
如果你将十六进制赋值给整数变量,它将始终包含二进制。 - Shiplu Mokaddim
那个问题在stackoverflow上不是已经被回答了多次吗? - juergen d
如果你将temp和number的位置交换,这段代码就能完美运行。 - Rosmarine Popcorn
5个回答

25
string input = "Hello World!";
char[] values = input.ToCharArray();
foreach (char letter in values)
{
    // Get the integral value of the character.
    int value = Convert.ToInt32(letter);
    // Convert the decimal value to a hexadecimal value in string form.
    string hexOutput = String.Format("{0:X}", value);
    Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);
}

/* Output:
   Hexadecimal value of H is 48
    Hexadecimal value of e is 65
    Hexadecimal value of l is 6C
    Hexadecimal value of l is 6C
    Hexadecimal value of o is 6F
    Hexadecimal value of   is 20
    Hexadecimal value of W is 57
    Hexadecimal value of o is 6F
    Hexadecimal value of r is 72
    Hexadecimal value of l is 6C
    Hexadecimal value of d is 64
    Hexadecimal value of ! is 21
 */

来源:http://msdn.microsoft.com/en-us/library/bb311038.aspx


7
当紧凑性更为重要时,可以使用以下LINQ版本:String.Join(" ", input.Select(c => String.Format("{0:X}", Convert.ToInt32(c))))。它的作用与原始代码相同,将输入字符串中的每个字符转换为16进制表示,并使用空格连接它们。 - Arithmomaniac

8

int包含一个数字,而不是数字的表示形式。12000等同于0x2ee0:

int a = 12000;
int b = 0x2ee0;
a == b

您可以使用 int.Parse() 将字符串 "12000" 转换为 int 类型。您可以使用 int.ToString("X") 将 int 类型格式化为十六进制。


6
您可以使用 String.Format 类将数字转换为十六进制。
int value = Convert.ToInt32(number);
string hexOutput = String.Format("{0:X}", value);

如果您想将字符串关键字转换为十六进制,您可以这样做。
string input = "Hello World!";
char[] values = input.ToCharArray();
foreach (char letter in values)
{
    // Get the integral value of the character.
    int value = Convert.ToInt32(letter);
    // Convert the decimal value to a hexadecimal value in string form.
    string hexOutput = String.Format("{0:X}", value);
    Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);
}

3

如果您想将其转换为十六进制 字符串,可以通过以下方式进行:

string hex = (int.Parse(number)).ToString("X");

如果你想将数字转换为十六进制,这是不可能的。因为计算机总是以二进制格式存储数字,所以当您执行 int i = 1000 时,它会将1000以二进制形式存储在 i 中。如果您使用十六进制,它也将被转换成二进制。所以这没有意义。


1

如果它是整数,你可以尝试像这样的东西

string number = "12000";
int val = int.Parse(number);
string hex = val.ToString("X");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接