1

例如,我有需要插入缓冲的 const 二进制数据

 char buf[] = "1232\0x1";

但是当二进制数据最初如下所示时怎么办

 char buf[] = "\0x11232";

编译器把它看成一个很大的十六进制数,但我的目的是

 char buf[] = {0x1,'1','2','3','2'};
4

3 回答 3

4

您可以使用编译时字符串连接:

char buf[] = "\x01" "1232";

\x但是,在没有以下情况下也可以使用 2 位数字:

char buf[] = "\x011232";

于 2012-05-15T07:25:00.037 回答
3

您可以通过组合相邻的字符串来创建单个字符串文字 - 编译器会将它们连接起来:

char buf[] = "\x1" "1232";

相当于:

char buf[] = {0x1,'1','2','3','2', 0};  // note the terminating null, which may or may not be important to you
于 2012-05-15T07:31:12.743 回答
1

您必须以两字节或四字节格式编写它:

\xhh = ASCII character in hexadecimal notation

\xhhhh = Unicode character in hexadecimal notation if this escape sequence is used in a wide-character constant or a Unicode string literal.

所以在你的情况下你必须写"\x0112345"

于 2012-05-15T07:26:42.947 回答