C字符串中的十六进制值

时间:2015-01-18 22:10:21

标签: c arrays string

我需要准备一系列ANSI C字符串,这些字符串包含范围为0x010x1a的字节。我制作了自定义代码页,因此这些值代表不同的字符(即0x09代表Š)。我想以这种方式初始化数组:

static const char* brands[] =  {
"Škoda",
  //etc...
};

如何在0x09中添加Š代替"Škoda"

4 个答案:

答案 0 :(得分:6)

建议不要使用"\x09koda",使用八进制或间隔字符串。

问题是十六进制转义序列的长度不受限制。因此,如果下一个char是十六进制字符,则会出现问题。使用八进制,限制为3.或使用分隔的字符串。然后编译器将连接,但转义序列不会意外地运行得太远。

// problematic
"\x09Czech"
 ^^^^^--- The escape sequence is \x09C, but \0x09 was hoped for

// recommend octal
"\0111234"
 ^^^^--- The escape sequence is \011

// recommend spaced strings
"\x09" "Czech"  

答案 1 :(得分:1)

非常简单

"Škoda" -> "\x09koda"

答案 2 :(得分:1)

  

如何在“Škoda”中放置0x09而不是Š?

"\x09koda"

答案 3 :(得分:1)

查看escape squences - 即\x09

对于十六进制转义,您希望使用\Xnnn,仅使用\nnn八进制和使用unicode \Unnnn