VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 893|回复: 7

怎样把信息以二进制形式写入文件

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-13 13:20:01 | 显示全部楼层 |阅读模式
我想把unsigned long数据以二进制写入到文件中,已知每个数据需要的位数(BIT,即只需写N位即可),怎样操作啊?
我这样做,但没有数据写入.
ifstream in("test.txt");  //其中是字符
ofstream out;
out.open("result.xxx", ios::binary);

int index;

while(!in.eof())
        {
                in>>index;
                out.write((char*)(code[index]),code_len[index]);
        }
回复

使用道具 举报

0

主题

19

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-1-17 10:45:01 | 显示全部楼层
out.write((char*)(code[index]),code_len[index]);
----------------------------
code是什么?里面放的什么?
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-20 14:45:01 | 显示全部楼层
code中是unsigned long
回复

使用道具 举报

0

主题

24

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-25 18:54:01 | 显示全部楼层
将一个多字节数据写到文件中,然后再从文件中将其恢复,这种方法存在移植性问题,因为不同的平台有不同的字节排序方法(大端和小端),楼主需要以一种统一的格式(自己定义一个顺序,或者采用网络字节序)进行约定,这样才可以。
回复

使用道具 举报

0

主题

78

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-1-26 00:36:02 | 显示全部楼层
BIT,即只需写N位即可
=========
读写文件的基本单位是字节, 无法只写几个位,
只能整个字节写到文件中 ~~~
回复

使用道具 举报

0

主题

78

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-1-26 10:45:01 | 显示全部楼层
//先用简单的程序测试一下看看

char str[]="Hello, Boy!";

ofstream out;
out.open("result.txt", ios::binary);  
out.write(str, strlen(str));   //写文件
out.close();      //关闭
回复

使用道具 举报

0

主题

11

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-1-26 12:00:02 | 显示全部楼层
>> 楼主需要以一种统一的格式(自己定义一个顺序,或者采用网络字节序)进行约定,这样才可以。

XDR ...
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-7 07:45:02 | 显示全部楼层
对文件的操作都是以字节为单位的,楼主想以bit为单位操作文件是不行的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表