关于C++ 按位输出到.bin文件的有关问题
关于C++ 按位输出到.bin文件的问题
我想在有一个很长(1000)的字符串,全部是01字符,我用想用bitset将这一串01字符串输出到.bin文件中,可是问题是,我输出后用ultraedit打开之后,01字符串都反过来了,即以前是0011010,现在输出到.bin文件中确实0101100
有什么方法可以做到我输入的位,结果和输出到二进制文件中的结果是一致的
------解决思路----------------------
这个其实就是CPU 是按大端存储数据到内存 还是小段存储到内存的问题 大端就是内存高址放数值的低位,小段就是内存高址放数值的高位,当然有肯能计算机的总线 cpu寄存器 或者指令集 的不同 x86系统的 有可能大端 有可能小端 所以你的系统就需要你来先判断了 很简单 就是比如unsigned short = 0x1234 unsinged char 取一下 如果是12 就是大端 反之依然
你现在存储到.bin文件 同样是大端小端的问题 你那个应该是大端的数据 你用小端输出到.bin了
我想在有一个很长(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;
有什么方法可以做到我输入的位,结果和输出到二进制文件中的结果是一致的
------解决思路----------------------
这个其实就是CPU 是按大端存储数据到内存 还是小段存储到内存的问题 大端就是内存高址放数值的低位,小段就是内存高址放数值的高位,当然有肯能计算机的总线 cpu寄存器 或者指令集 的不同 x86系统的 有可能大端 有可能小端 所以你的系统就需要你来先判断了 很简单 就是比如unsigned short = 0x1234 unsinged char 取一下 如果是12 就是大端 反之依然
你现在存储到.bin文件 同样是大端小端的问题 你那个应该是大端的数据 你用小端输出到.bin了