qq_42035758
Quantum_107
2018-04-29 08:01
采纳率: 50%
浏览 3.3k

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)里面了。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • u010104813
    可夫贺 2018-04-29 09:24
    已采纳
         ofstream fout("abcd.dat",ios::binary);
        int Bit[2] = {0, 1};
        int Lines = 2;
        for (int i = 0; i < Lines; i++)
        {
        unsigned char ch = static_cast<unsigned char>(Bit[i]);
        fout.write((char  *)&ch, sizeof(unsigned char));
        }
        fout.close();
    

    上面为完整测试代码,题主可参看

    点赞 评论
  • qq_40632825
    qq_40632825 2018-04-29 09:13

    c++中采用ifstream ifile("stu.txt")打开源文件,读入数据,再用ofstream ofile("flu.dat",ios::binary)打开二进制文件,使用write(函数写入就可以了)

    点赞 1 评论
  • caozhy
     ofstream rs("xxx,dat",ios::binary);
    for (i = 0; i < Lines; i++)
    {
    unsigned char ch = (unsigned char)Bit[i];
    rs.write((unsigned char *)&ch, sizeof(unsigned char);
    }
    rs.close();
    
    点赞 评论
  • caozhy
     如果要考虑效率,就
    
    unsigned char *Bit = new int[Lines];
    int i = 0;
    while (!file.eof())
    {
    int x;
    file >> &x;
    Bit[i] = (unsigned char)(i % 0x100);
    i++;
    }
    file.close(); 
    ofstream rs("xxx,dat",ios::binary);
    rs.write((unsigned char *)&Bit, sizeof(unsigned char)*Lines);
    rs.close();
    
    点赞 评论
  • u010104813
    可夫贺 2018-04-29 08:58

    ofstream fout("xxxx.dat",ios::binary);
    for (i = 0; i < Lines; i++)
    {
    unsigned char ch = static_cast(Bit[i]);
    fout.write((char *)&ch, sizeof(unsigned char));
    }
    fout.close();

    点赞 评论

相关推荐