C#构建十六进制表示法字符串

时间:2008-11-12 14:27:15

标签: c# string hex

如何以十六进制表示法构建转义序列字符串。

示例:

string s = "\x1A"; // this will create the hex-value 1A or dec-value 26

我希望能够构建十进制值在00到FF之间的字符串,如下所示(在此示例中为1B)

string s = "\x" + "1B"; // Unrecognized escape sequence

也许还有另一种制作十六进制字符串的方法......

3 个答案:

答案 0 :(得分:34)

请尽量避免\x转义序列。它很难阅读,因为停止的地方取决于数据。例如,这两个字符串之间的差异有多大差异?

"\x9Good compiler"
"\x9Bad compiler"

在前者中,“\ x9”是制表符 - 转义序列在那里停止,因为'G'不是有效的十六进制字符。在第二个字符串中,“\ x9Bad”是一个转义序列,留下一些随机的Unicode字符和“编译器”。

我建议您使用\ u转义序列:

"\u0009Good compiler"
"\u0009Bad compiler"

(当然对于标签你会使用\t,但我希望你明白我的意思......)

当然,这与原来的问题有些不同,但已经得到了回答:)

答案 1 :(得分:20)

您不会在字符串中存储十六进制值。

你可以,但它只是一个字符串,并且必须被强制转换为整数或字节才能实际读取它的值。

您可以将十六进制值作为文字分配给int或字节,但是:

Byte value = 0x0FF;
int value = 0x1B;

因此,很容易将十六进制文字传递给你的字符串:

string foo = String.Format("{0} hex test", 0x0BB);

这将创建此字符串“126 hex test”。

但我认为这不是你想要的?

答案 2 :(得分:4)

有十六进制 16位 unicode字符代码的'\ u'转义码。

Console.WriteLine( "Look, I'm so happy : \u263A" );