C/C++ 如何以二进制方式打开文件并以0,1方式读取写入?例如我想把一个bmp格式的图片以二进制打开,得到01000111101010100.。。。这种形式并储存到文本中,然后再把这些数字二进制写入还原为原来的bmp图片。小弟菜鸟,请教各位高手应如何做?希望给出一个源码并解释一下。
按二进方式打开,不能以文本方式打开;否则,行结束符的转换会影响文件内容;
按二进方式打开,只能以字节为单位进行读取写入,不能以“位”方式读写,否则,
太慢,效率低;
自行操作BMP文件,麻烦有难度,要用API或面向对象方式操作BMP,效率高;
我用的是C++BUILDER,都有现成的BMP控件对象;
追问额,主要是以字节读取存储这一块怎么弄?
追答你要把书上C读写文件这节看一看,fread,fwrite都可读写字节,
这里不可能系统的给你讲解。
这是我制作的图片操作的框架,支持图像的旋转,加密以及简单的颜色操作(负片,灰度,轮廓提取)等,应该够用了。其中有一个编译选项#define BITSET_24 是用来选择处理文件是24位还是32位的。
matrix.h: 提供存储图片信息的动态二维数组类,注意,二维数组的地址用圆括号运算符提取,如:
Array2 a[2][3]; a(2) = *(a + 2);
bitmap.h: 提供处理图片的类及加密器Encrypter
额,我不止要处理图片,其它文件例如文本文档,可执行程序都要这样处理。。。
追答可以参考我的类中load和save部分的函数。大体思想都是一样的……先打开一个文档并建立指针与之联系,然后读写数据,最后保存文档
我这边算法要求,需要这个二进制,暂时没办法改。。。