[求助]一个按位读取文件信息问题

小野兽 2011-03-31 08:33:17
今天琢磨了很久没想明白应该怎么定义。问题是这样:假设有一个文件叫“1.dat”,用TXT改扩展名来的,里面有"ABCDE"五个字母,也就是“41 42 43 44 45”,现在需要一种方法,来“按位读取”,每次读取一字节,存进一个缓冲区,缓冲区是一个长度为8的数组,比如读进“41”,缓冲区数组里就是{0,1,0,0,0,0,0,1},请问这种缓冲区的结构如何定义呢?如何输出呢?希望高手能以读进一个“41”为例子帮忙看一下,感激不尽!


#include <stdio.h>

struct BUFFER
{
//此处不知如何定义
} *buffer;

void main()
{
FILE *fp;
fp = fopen("1.dat","wb+");

fread(buffer,1,1,fp); //只读一进第一个“41”

//func(&buffer); 这里进行相关操作,先忽略

//这里输出缓冲区,不知如何输出

fclose(fp);
}
...全文
136 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小野兽 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 delphiwcdj 的回复:]
或者这个
[/Quote]
多谢了!!!
qq120848369 2011-03-31
  • 打赏
  • 举报
回复
一个字节读进来,它的二进制就是0100 0001了,不必再转存之类的,想转的话写一个函数用来将10进制转2进制就是了.
delphiwcdj 2011-03-31
  • 打赏
  • 举报
回复
delphiwcdj 2011-03-31
  • 打赏
  • 举报
回复
或者自己定义数组存放
string strval("1100");
bitset<32> bitvec4(strval);
参考

小野兽 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 delphiwcdj 的回复:]
你先把数据读进来然后再把它转化为二进制,比如用stl的bitset
[/Quote]

抱歉我初学,还没学到STL,求给一段实现代码吧
delphiwcdj 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaoyeshou0725dx 的回复:]

引用 1 楼 delphiwcdj 的回复:
纠正下 A 是 65

额……不要在乎大小写啦……
[/Quote]
小写 a 是 97
Meteor_Code 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 delphiwcdj 的回复:]

纠正下 A 是 65
[/Quote]
人家说的是16进制呗,呵呵
delphiwcdj 2011-03-31
  • 打赏
  • 举报
回复
你先把数据读进来然后再把它转化为二进制,比如用stl的bitset
小野兽 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 delphiwcdj 的回复:]
纠正下 A 是 65
[/Quote]
额……不要在乎大小写啦……
delphiwcdj 2011-03-31
  • 打赏
  • 举报
回复
纠正下 A 是 65

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧