请问memcpy(buf,"\x02\x03\x01\x00\x01",5)是什么意思??

时间:2021-01-19 22:46:39
unsigned char buf[128];
        FILE *f;
    memcpy(buf,"\x30\x81\x89\x02\x81\x81\x00",7);

    f=fopen("root.dat","wb");
    fwrite(buf,1,7,f);
    memcpy(buf,"\x02\x03\x01\x00\x01",5);
    fwrite(buf,1,5,f);
    fclose(f);

往buf里面copy的是什么字符,这是什么编码方式啊!多谢了!

8 个解决方案

#1


这是用转义字符形式表示字符的方式:

\0x 或者 \x 开头是指用十六进制表示字符的ASCII码值
\ 后面跟数字是用八进制表示字符的ASCII码值

例如:对于字符 'A',可表示为 '\0x41'、'\x41' 或 '\101'

上述形式的字符连接在一起就成了一个字符串。

#2


但是上述\x30\x81\x89\x02\x81\x81\x00是什么东西啊,他们的ASCII表示的东西都很特殊啊?

新手,请别见笑!谢谢了!

#3


怎么没有人回答啊??

#4


f=fopen("root.dat","wb");
从这里就可以看出来,根本写的就不是文本,是二进制的东西,具体怎么解释,就要看程序里面怎么用的了,反正不是人看得懂的字

#5


但是上述\x30\x81\x89\x02\x81\x81\x00是什么东西啊,
它只能是开发者自己定义的一些字符,不一定是ascii码,如中文码,unicode编码等,如一个中文"颗"就是"\xbf\xc5"

#6


memcpy(buf,"\x30\x81\x89\x02\x81\x81\x00",7);


=================================================

\xhh,表示的是二位十六进制的数,如\x30 表示的就是0
后面的可以依些类推,

memcpy 就是将中间那个怪怪的字符串中拷7个字符到buf中去

#7


天书,呵呵

#8


\xhh,表示的是二位十六进制的数

#1


这是用转义字符形式表示字符的方式:

\0x 或者 \x 开头是指用十六进制表示字符的ASCII码值
\ 后面跟数字是用八进制表示字符的ASCII码值

例如:对于字符 'A',可表示为 '\0x41'、'\x41' 或 '\101'

上述形式的字符连接在一起就成了一个字符串。

#2


但是上述\x30\x81\x89\x02\x81\x81\x00是什么东西啊,他们的ASCII表示的东西都很特殊啊?

新手,请别见笑!谢谢了!

#3


怎么没有人回答啊??

#4


f=fopen("root.dat","wb");
从这里就可以看出来,根本写的就不是文本,是二进制的东西,具体怎么解释,就要看程序里面怎么用的了,反正不是人看得懂的字

#5


但是上述\x30\x81\x89\x02\x81\x81\x00是什么东西啊,
它只能是开发者自己定义的一些字符,不一定是ascii码,如中文码,unicode编码等,如一个中文"颗"就是"\xbf\xc5"

#6


memcpy(buf,"\x30\x81\x89\x02\x81\x81\x00",7);


=================================================

\xhh,表示的是二位十六进制的数,如\x30 表示的就是0
后面的可以依些类推,

memcpy 就是将中间那个怪怪的字符串中拷7个字符到buf中去

#7


天书,呵呵

#8


\xhh,表示的是二位十六进制的数