C# write()和memcpy()在字节大小方面的差异
我目前正在尝试恢复图像数据,但我不想在恢复之前将其写入文本文件,而是想将其放入数据库中。。现在,我将4字节(起始集群)、2字节(头)、2字节(数据)写入一个文本文件C# write()和memcpy()在字节大小方面的差异,c#,c,data-recovery,C#,C,Data Recovery,我目前正在尝试恢复图像数据,但我不想在恢复之前将其写入文本文件,而是想将其放入数据库中。。现在,我将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后,我的
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字节的数据
有没有办法这样做
对不起,我被困在这里好几个星期了 大多数C API将零字节解释为字符串终止字符。这里发生的事情是,memcpy确实将零字节复制到字符数组中,但是以后处理数组的任何操作都会在第一个零字节处停止。这与C有什么关系?非常感谢您的回复!你知道我可以用00替换零字节吗?给您带来不便,敬请原谅!00是零字节。将字符数组写入文件的代码是什么?