C 字符串中的十六进制值
Hex value in C string
我需要准备 ANSI C 字符串常量数组,其中包含 0x01
到 0x1a
范围内的字节。我制作了自定义代码页,因此这些值代表不同的字符(即 0x09
代表 Š)。我想以这种方式初始化数组:
static const char* brands[] = {
"Škoda",
//etc...
};
如何在 "Škoda"
中输入 0x09
而不是 Š
?
很简单
"Škoda" -> "\x09koda"
How can I put 0x09 instead of Š in "Škoda"?
"\x09koda"
看看 escape squences - 即 \x09
对于十六进制转义,您要使用 \Xnnn
,对于八进制,仅要使用 \nnn
,对于 unicode,则要使用 \Unnnn
建议不要使用"\x09koda"
,使用八进制或空格字符串。
问题在于十六进制转义序列的长度不受限制。所以如果下一个char
是十六进制字符,就会出现问题。使用八进制,限制为 3 个。或者使用分隔的字符串。编译器随后会连接,但转义序列不会意外 运行 太远。
// problematic
"\x09Czech"
^^^^^--- The escape sequence is \x09C, but [=10=]x09 was hoped for
// recommend octal
"11234"
^^^^--- The escape sequence is 1
// recommend spaced strings
"\x09" "Czech"
我需要准备 ANSI C 字符串常量数组,其中包含 0x01
到 0x1a
范围内的字节。我制作了自定义代码页,因此这些值代表不同的字符(即 0x09
代表 Š)。我想以这种方式初始化数组:
static const char* brands[] = {
"Škoda",
//etc...
};
如何在 "Škoda"
中输入 0x09
而不是 Š
?
很简单
"Škoda" -> "\x09koda"
How can I put 0x09 instead of Š in "Škoda"?
"\x09koda"
看看 escape squences - 即 \x09
对于十六进制转义,您要使用 \Xnnn
,对于八进制,仅要使用 \nnn
,对于 unicode,则要使用 \Unnnn
建议不要使用"\x09koda"
,使用八进制或空格字符串。
问题在于十六进制转义序列的长度不受限制。所以如果下一个char
是十六进制字符,就会出现问题。使用八进制,限制为 3 个。或者使用分隔的字符串。编译器随后会连接,但转义序列不会意外 运行 太远。
// problematic
"\x09Czech"
^^^^^--- The escape sequence is \x09C, but [=10=]x09 was hoped for
// recommend octal
"11234"
^^^^--- The escape sequence is 1
// recommend spaced strings
"\x09" "Czech"