C 字符串中的十六进制值

Hex value in C string

我需要准备 ANSI C 字符串常量数组,其中包含 0x010x1a 范围内的字节。我制作了自定义代码页,因此这些值代表不同的字符(即 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"