社区
C语言
帖子详情
c++二进制文件读写的疑惑
asas2002
2002-05-03 09:53:27
小弟最近在编写c++有关二进制文件读写的程序(vc6.0),但找了半天msdn也没发现什么二进制功能很全的函数和类库,请各位给小弟我指点一下有关二进制文件的读写的问题.
我主要是想实现写入二进制文件指定位数的值,和从二进制文件读出指定位数的值.例如,我想写入二进制数10000100010(共11位),我想把它写入二进制文件,一次写入14位,00010000100010(不足的位用0补),然后再从文件里读出写入的这个数(一次读出14位).
先谢大家了.
...全文
516
13
打赏
收藏
c++二进制文件读写的疑惑
小弟最近在编写c++有关二进制文件读写的程序(vc6.0),但找了半天msdn也没发现什么二进制功能很全的函数和类库,请各位给小弟我指点一下有关二进制文件的读写的问题. 我主要是想实现写入二进制文件指定位数的值,和从二进制文件读出指定位数的值.例如,我想写入二进制数10000100010(共11位),我想把它写入二进制文件,一次写入14位,00010000100010(不足的位用0补),然后再从文件里读出写入的这个数(一次读出14位). 先谢大家了.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wolaiye3
2002-05-06
打赏
举报
回复
我也想做文件压缩!
mjm_d
2002-05-05
打赏
举报
回复
fwrite
fread
richard_hu
2002-05-05
打赏
举报
回复
自己做一个struct来存你的数据,然后就可以实现BIT read & write
Leemaasn
2002-05-04
打赏
举报
回复
是啊,纯bit是没有的,都是拼凑的。。。。
blactte
2002-05-04
打赏
举报
回复
WORD wval;
假设你定义的11位二进制数保存在xxx中
wval=wval|xxx;
然后再把wval写入文件
Wind_LQ
2002-05-04
打赏
举报
回复
毕业设计的时候做HUFFMAN压缩时也用到这个,可能少几个头文件自己加吧。
另外这是2年前的代码比较幼稚,见笑了。
int Bit_Write(char *bit_stream)
{
static FILE *fp=NULL;
static char buf[100];
if (fp!=NULL && strlen(bit_stream)!=0)
{
/*Write BitStream to file*/
strcpy(&buf[strlen(buf)],bit_stream);
for(;strlen(buf)>=8;)
{
unsigned char byte;
int x;
for(x=0,byte=0;x<8;x++)
{
if (buf[x]!='0' && buf[x]!='1')
{
/*Bit Stream Error!*/
return 0;
}
byte=byte*2+(buf[x]-'0');
}
fwrite(&byte,1,1,fp);
strcpy(&buf[0],&buf[8]);
}
return 1;
}
if (fp!=NULL && strlen(bit_stream)==0)
{
/*Write the buffer and Close the file*/
if (strlen(buf)>0)
{
unsigned char byte;
int x;
for(;strlen(buf)<8;)
{
strcpy(&buf[strlen(buf)],"0");
}
for(x=0,byte=0;x<8;x++)
{
if (buf[x]!='0' && buf[x]!='1')
{
/*Bit Stream Error!*/
return 0;
}
byte=byte*2+(buf[x]-'0');
}
fwrite(&byte,1,1,fp);
}
fclose(fp);
fp=NULL;
return 1;
}
if (fp==NULL)
{
/*Open file*/
fp=fopen(bit_stream,"wb");
if (fp==NULL)
{
/*Couldn't open file*/
return 0;
}
buf[0]=0;
return 1;
}
return 0;
}
int Bit_Read(char *filename)
{
static FILE *fp;
static unsigned char buf;
static int times;
int bit;
if(fp!=NULL)
{
if (times==0)
{
fread(&buf,1,1,fp);
if (feof(fp))
{
/*End of the file*/
fclose(fp);
fp=NULL;
return -1;
}
times=8;
}
bit=buf/128;
buf%=128;
buf*=2;
times--;
return bit;
}
if(fp==NULL)
{
/*Open file*/
fp=fopen(filename,"rb");
if (fp==NULL)
{
/*Open file error*/
return 0;
}
times=0;
buf=0;
return 1;
}
return 1;
}
vcmfc
2002-05-04
打赏
举报
回复
怪事,自动提交???
继续:
要么将你的这些001001当作字符(io流的字符模式),要么处理成int,byte等类型,再write,后南read(binary).
vcmfc
2002-05-04
打赏
举报
回复
我的想法有偏见:
IO流中有个read与write可以处理binary,
canco
2002-05-03
打赏
举报
回复
从你的需求来看,你好象不是要实现二进制文件读写,而是把整型转化为2进制按文本写进文件,这种实现只需用C++中的ofstream类,再加上bitset类库应该就可以实现了。
z_sky
2002-05-03
打赏
举报
回复
缓冲和拼凑字节,硬着头皮上吧,不过这对数据存储格式的理解有好处。
asas2002
2002-05-03
打赏
举报
回复
哎,我也想按byte来呀,可是我做的压缩算法是按bit来的......能省就省
z_sky
2002-05-03
打赏
举报
回复
文件不是按bit访问的,而是按byte,所谓的字节流,所以需要你做缓冲和拼凑字节。读出也是这样。或者你大方点用16bit(2byte)作存储单位。
asas2002
2002-05-03
打赏
举报
回复
能给点提示也好呀
C++
二进制
文件读写
C/
C++
实现简单的
二进制
文件读取和写入示例 1.包含如何读取和写入数字,以及用缓存按字节读取 2.采用标准输入和输出函数创建、打开、关闭文本文件或
二进制
文件
c++
二进制
文件读取
c++
文件读取提供可靠源代码。cpp文件
C++
,java读写
二进制
文件方法介绍.pdf
C++
,java读写
二进制
文件方法介绍.pdf java从第九页开始
c++
(
二进制
读写) 文件操作
2.
C++
3.文件写3个浮点数,英文字符,中文字符 4.文件读3个浮点数,英文字符,中文字符 5.基于MFC的实例 6.获取文件长度 7.修改文件内指针位置 8.如果没有VS2010,用记事本打开TestFileOperateDlg.cpp 看文档最下方的...
利用C/
C++
二进制
读写png文件的方法示例
二进制
文件不是以ASCII代码存放数据的,它将内存中数据存储形式不加转换地传送到磁盘文件,因此它又称为内存数据的映像文件。因为文件中的信息不是字符数据,而是字节中的
二进制
形式的信息,因此它又称为字节文件。 ...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章