C# 构建十六进制符号字符串

Posted

技术标签:

【中文标题】C# 构建十六进制符号字符串【英文标题】:C# Build hexadecimal notation string 【发布时间】:2010-09-21 23:54:42 【问题描述】:

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

例子:

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

我希望能够像这样构建具有 00 到 FF 之间的十六进制值的字符串(在本例中为 1B)

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

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

【问题讨论】:

我想我不明白 - 在这个例子中,你想要一个带有 ansi 代码 26 的字符? \x 和 \u 都是 unicode 字符的转义序列。 '\u03A9''\x03A9' 都在控制台输出上打印 omaga (Ω) 符号。 【参考方案1】:

请尽量避免\x 转义序列。它很难阅读,因为它停止在哪里取决于数据。比如这两个字符串一眼看去有多大区别?

"\x9Good compiler"
"\x9Bad compiler"

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

我建议你改用 \u 转义序列:

"\u0009Good compiler"
"\u0009Bad compiler"

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

当然,这与最初的问题有些不同,但已经回答了:)

【讨论】:

【参考方案2】:

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

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

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

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

因此,很容易将十六进制文字传递到您的字符串中:

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

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

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

【讨论】:

为什么 0x0BB 是 126? 126 是 0x7E 而 0x0BB 是 187,对吧?【参考方案3】:

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

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

【讨论】:

以上是关于C# 构建十六进制符号字符串的主要内容,如果未能解决你的问题,请参考以下文章

NSLog()输出函数集格式字符

C#控制台基础 无符号十六进制小数转换为十进制

C# 十进制文字符号中的 M 代表啥?

C#控制台基础 无符号二进制小数转换为十进制

C#控制台基础 无符号八进制小数转换为十进制

十六进制表示法和有符号整数