0

我目前正在尝试恢复图像数据,但不是在恢复之前将其写入文本文件,而是想将它们放入数据库中。现在,我写了 4 字节(启动集群)、2 字节(标题)、2 字节(数据)到文本文件中。

DWORD x = 0;
WORD headerByte = 0;
WORD dataByte = 0;

write(jpg_info,&x,4);
write(jpg_info,&headerByte,2);
write(jpg_info,&dataByte,2);

打开 jpg_info.txt 后我的结果将是(例如): DB 21 00 00 95 05 00 00

但是,当我尝试将 memcpy() 用于字符串时,

char xChar[8];
char headerByteChar[4];
char dataByteChar[4];

memcpy(xChar, &x, 4);
memcpy(headerByteChar, &headerByte, 2);
memcpy(dataByteChar, &dataByte, 2);

我的结果将是:DB 21 95 05

这不是我想要的.. 我尝试了各种方法,但我永远无法得到相同的结果..

由于 x 只使用 2 个字节的数据,我希望剩余的 2 个字节为 00,即使它只占用 2 个字节的数据。

反正有这样做吗?

对不起,我已经被困在这里好几个星期了!

4

1 回答 1

2

大多数 C api 将零字节解释为字符串终止字符。这里发生的情况是 memcpy 确实将零字节复制到字符数组中,但是您用于处理数组的任何内容稍后都会在第一个零字节处停止。

于 2014-02-05T07:28:48.673 回答