在 c 中使用 memcpy 复制二进制数据
Copying binary data with memcpy in c
我在使用memcpy时遇到了以下问题:
假设一个16进制的数据必须用二进制复制,例如:203800000E820006,那么应用如下指令:
unsigned char buffer[8];
memcpy(buffer,"\x20\x38\x00\x00\x0E\x82\x00\x06",8);
但是,当我以二进制形式写入数据时,它只打印二进制形式的前 2 个字节,因为 \x00 被解释为字符串终止符。如何避免或解决此问题,以便以 8 字符的二进制格式表示 16 字符的字符串?
您的缓冲区不是字符串。您不能通过将它传递给需要字符串的函数来对待它,例如 strcat
、strcpy
、strcmp
或 [=15= 的 %s
格式说明符].
你有一个字符数组,所以打印它们:
int i;
for (i=0;i<sizeof(buffer);i++) {
printf("%02hhX ", buffer[i]);
}
printf("\n");
我在使用memcpy时遇到了以下问题:
假设一个16进制的数据必须用二进制复制,例如:203800000E820006,那么应用如下指令:
unsigned char buffer[8];
memcpy(buffer,"\x20\x38\x00\x00\x0E\x82\x00\x06",8);
但是,当我以二进制形式写入数据时,它只打印二进制形式的前 2 个字节,因为 \x00 被解释为字符串终止符。如何避免或解决此问题,以便以 8 字符的二进制格式表示 16 字符的字符串?
您的缓冲区不是字符串。您不能通过将它传递给需要字符串的函数来对待它,例如 strcat
、strcpy
、strcmp
或 [=15= 的 %s
格式说明符].
你有一个字符数组,所以打印它们:
int i;
for (i=0;i<sizeof(buffer);i++) {
printf("%02hhX ", buffer[i]);
}
printf("\n");