C++ 向文件 写入 一个 二进制位

文件的本质是1和0(二进制位)的组合。所以txt和dat本质上应该一样吧。那么当打开一个TXT和DAT文件后,分别执行charc='0';outf<<c;后TXT和DAT... 文件的本质是1和0(二进制位)的组合。
所以txt和dat本质上应该一样吧。
那么当打开一个TXT和DAT文件后,分别执行
char c='0';outf<<c;后
TXT和DAT文件都会增大8个bit吗?
其实我就想知道,如何向文件中写入一个个二进制位,并且,用正确的方法(可能不是上面的语句)成功写入一个二进制位 和打开的文件类型有关吗?谢谢。
展开
 我来答
miniapp16cd090a0843
2011-11-19 · 超过26用户采纳过TA的回答
知道答主
回答量:98
采纳率:100%
帮助的人:33.3万
展开全部
写入二进制文件的例子网上有很多,写在这无非也是把别人的例子搬过来,
但是请楼主注意一点, 如果写入或读取的位数不是8的倍数时,要注意数据对齐问题,否则会读乱.例如在VC6中一个不齐的二进制数据读取时,可以加这三句代码限制一下
#pragma pack(push)
#pragma pack(1)
// 这里是不齐的那个二进制数据的存储定义(变量或结构)
#pragma pack(pop)
希望对您有帮助.
追问
我现在想向文件中输入一系列二进制位(编码的需要),每一个ASCII字符(用哈夫曼树)编码后不一定是8位,得先用个什么东西给10序列存起来,再2写入文件吗?这个东西是什么呢?
追答
你可以根据数据的特征定义一个结构啊:)

比如你说的这种情况

typedef struct BIT_{
int CodeLenth;// 用来记录编码长度
unsigned int code; // 用来记录编码本身
};

如果是用二进位存储的, 将来写入文件的时候根据结构体的两个变量截取一下就好了.

当然方法有很多了,我这个有点土是真的.

另:不好意思,好久没写代码了,上一个回答我说错了,更正一下
位数对其的时候不是以8的倍数,这个8的倍数是某个游戏脚本编译器的限制,
C的编译器一般以结构体中最长的变量所占位数为基准对齐.
特殊情况是当结构体的大小大于处理器位数时,这时会以处理器位数为基准来对齐.
头好舞05
2011-11-19 · TA获得超过2099个赞
知道小有建树答主
回答量:797
采纳率:100%
帮助的人:496万
展开全部
C++中,向文件中写入二进制位,要将文件按二进制方式打开,那样就不管是什么文件都一视同仁(即与文件类型无关),那样是最底层的文件访问方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式