我目前正在尝试恢复图像数据,但是在恢复之前没有将其写入文本文件,我想将它们放入数据库..现在,我写了4个字节(起始集群),2byte(标题) ,2byte(数据)到文本文件中。
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个字节的数据。
有没有这样做?
对不起,我已经被困在这里好几个星期了!
答案 0 :(得分:2)
大多数C apis将零字节解释为字符串终止字符。这里发生的事情是memcpy将零字节复制到字符数组中,但是无论你用什么来处理数组,都会在第一个零字节处停止。