如何使用hex表示法为char *赋值?
我通常以下列方式使用指针
char * ptr = malloc(sizeof(char)* 100); memset(ptr,0,100); strncpy(ptr,“cat”,100 - 1);
但是这一次,而不是使用“cat”,我想在hex中使用ASCII等效。
cat = 0x63,0x61,0x74,0x00
我试过了
strncpy(ptr,“0x630x61”,100 - 1);
但它按预期失败了。
什么是正确的语法?
我还需要放一个0x00吗? 暂时让我们忘记memset
,现在我需要放一个0x00吗? 因为在“cat”表示法中,会自动放置null。
问候
\xXX
是以hex格式插入字符的语法。 所以你的是:
strncpy( ptr, "\x63\x61\x74", 100 - 1);
您不需要输入\x00
因为引号自动为null分隔字符串。
注意,你只需要在“”字符串里面\
char cat[4]; cat[0] = 0x63; cat[1] = 0x61; cat[2] = 0x74; car[3] = 0x00; char cat[] = "\x63\x61\x74"; // note the \0 is added for you char cat[] = { 0x63, 0x61, 0x74, 0x00 };
都一样
strncpy( ptr, "\x63\x61" , 100 - 1 );
0x63
是整数hex文字; C编译器在代码中解析它。 但在字符串中,它被解释为字符序列0,x,6,3
。 值为63 hex的char
的文字。 是'\x63'
,在字符串中你必须使用这种表示法。 "c\x63"
是零终止字符串的字面值,不管引号中的字符(或表示它们的符号),所以不,您不需要手动附加尾随零。