C++ 数据转换 如何将文本文件(.txt)转换成二进制文件(.dat)?

有什么方法可以把int 类型的数组转换成 unsigned char的数组? 因为我现在从文本文件读取(0-255)的数据,一行一个数据,读取到在int数组每个数据占用三个字节,我想只占用一个字节,然后保存二进制文件,请问怎么可以解决呢? 例如,文本文件数据是255,这样写入之后二进制文本之后
//ofstream fout("Binary.dat", ios_base::out | ios_base::binary);
for (i = 0; i < LINES; i++) //输出二进制文本
{
out.write((char*)&BINARY[i], sizeof(BINARY[i]));
}
希望读取到的二进制数据还是255。题主在做随机数,需要用Binary,即每BYTE占用八个BITs
Lines = CountLines(filename);
cout << "文件行数:" << Lines << endl;
// 读取文件行数
int *Bit = new int[Lines];
int i = 0;
while (!file.eof())

{
file >> Bit[i];
i++;
}
file.close(); 
//读取文本文件数据到数组,关闭文件
for (i = 0; i < Lines; i++)

{
cout << Bit[i]<<endl;
}
delete[]Bit;
cin.get();
//输出数组内容到屏幕
目前,我只是把数据读到一个int数组(Bits)里面了。

牛魔王的故事
浏览 3977回答 2
2回答

汪汪一只猫

&nbsp;ofstream&nbsp;fout("abcd.dat",ios::binary); &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;Bit[2]&nbsp;=&nbsp;{0,&nbsp;1}; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;Lines&nbsp;=&nbsp;2; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;Lines;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;ch&nbsp;=&nbsp;static_cast<unsigned&nbsp;char>(Bit[i]); &nbsp;&nbsp;&nbsp;&nbsp;fout.write((char&nbsp;&nbsp;*)&ch,&nbsp;sizeof(unsigned&nbsp;char)); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;fout.close();上面为完整测试代码,题主可参看

慕的地6264312

&nbsp;ofstream&nbsp;rs("xxx,dat",ios::binary); for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;Lines;&nbsp;i++) { unsigned&nbsp;char&nbsp;ch&nbsp;=&nbsp;(unsigned&nbsp;char)Bit[i]; rs.write((unsigned&nbsp;char&nbsp;*)&ch,&nbsp;sizeof(unsigned&nbsp;char); } rs.close();
打开App,查看更多内容
随时随地看视频慕课网APP