关于C++ 按位输出到.bin文件的问题

小白么么哒 2015-04-21 10:41:07
我想在有一个很长(1000)的字符串,全部是01字符,我用想用bitset将这一串01字符串输出到.bin文件中,可是问题是,我输出后用ultraedit打开之后,01字符串都反过来了,即以前是0011010,现在输出到.bin文件中确实0101100
string bitval = m;//m是一个一维字符数组
bitset<COLUMN> b(bitval);
ofstream ofs("E:\\GPU_Bitmap_Apriori\\data\\fimi\\r1.bin", ios::binary);
ofs.write((char*)&b, sizeof(b)); //写入 b
cout<<"sizeof(b):"<<sizeof(b)<<endl;
cout<<"b:"<<b<<endl;


有什么方法可以做到我输入的位,结果和输出到二进制文件中的结果是一致的
...全文
271 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白么么哒 2015-04-21
  • 打赏
  • 举报
回复
引用 4 楼 tangtangtangbaoli 的回复:
这个其实就是CPU 是按大端存储数据到内存 还是小段存储到内存的问题 大端就是内存高址放数值的低位,小段就是内存高址放数值的高位,当然有肯能计算机的总线 cpu寄存器 或者指令集 的不同 x86系统的 有可能大端 有可能小端 所以你的系统就需要你来先判断了 很简单 就是比如unsigned short = 0x1234 unsinged char 取一下 如果是12 就是大端 反之依然 你现在存储到.bin文件 同样是大端小端的问题 你那个应该是大端的数据 你用小端输出到.bin了
不过我发现基本没有可以直接对1000位以上的数字进行转换的方法,还是必须要将1000位拆分成1个字节或者4个字节再依次输出,我就怕这种效率比较低,我目前还有100000位以上的01需要处理,想想就可怕
小白么么哒 2015-04-21
  • 打赏
  • 举报
回复
引用 4 楼 tangtangtangbaoli 的回复:
这个其实就是CPU 是按大端存储数据到内存 还是小段存储到内存的问题 大端就是内存高址放数值的低位,小段就是内存高址放数值的高位,当然有肯能计算机的总线 cpu寄存器 或者指令集 的不同 x86系统的 有可能大端 有可能小端 所以你的系统就需要你来先判断了 很简单 就是比如unsigned short = 0x1234 unsinged char 取一下 如果是12 就是大端 反之依然 你现在存储到.bin文件 同样是大端小端的问题 你那个应该是大端的数据 你用小端输出到.bin了
谢谢您的讲解,我基本上理解了,我去找一下如何将数据进行大小端的转换
tangtangtangbaoli 2015-04-21
  • 打赏
  • 举报
回复
这个其实就是CPU 是按大端存储数据到内存 还是小段存储到内存的问题 大端就是内存高址放数值的低位,小段就是内存高址放数值的高位,当然有肯能计算机的总线 cpu寄存器 或者指令集 的不同 x86系统的 有可能大端 有可能小端 所以你的系统就需要你来先判断了 很简单 就是比如unsigned short = 0x1234 unsinged char 取一下 如果是12 就是大端 反之依然 你现在存储到.bin文件 同样是大端小端的问题 你那个应该是大端的数据 你用小端输出到.bin了
小白么么哒 2015-04-21
  • 打赏
  • 举报
回复
难道只有只能,将1000或者100000的字符串分成一个字节一个字节输出吗
小白么么哒 2015-04-21
  • 打赏
  • 举报
回复
求各位大神们帮帮忙,不胜感恩
小白么么哒 2015-04-21
  • 打赏
  • 举报
回复
我补充一下,可能刚刚说的不清楚,如果String bitval("0110010111111111"),那么输出到二进制文件后就变成了11111111 01100101(16进制就是FF 65),就是前8个和后八个位的位置是颠倒的,以一个字节位一组,字节中的01位置是不变的,但是我想在想要的是输出到二进制文件后仍然是0110010111111111 即65 FF,并且还有还有一个问题是输出的结果总是会给我我加两个字节的00

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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