如何把01串变成二进制流保存到txt中
怎么把01串变成二进制流保存到txt中
如题,如何将01串变成二进制流保存到txt中,如char *s = "010010010011011001"保存到a.txt中
------解决方案--------------------
这个不难啊,你只要每次读取8个字符 1/0 组成一个字节,然后进行运算
例: 00010010
0*128 + 0*64 + 0*32 + 1*16 + 0*8 + 0*4 + 1*2 + 0*1 = 18
你把 18 作为 byte类来处理,然后将byte[]写入文件就好啦。
注意: signed byte 和 unsigned byte的转换。这个转换取决与你的选择。
------解决方案--------------------
大概猜到LZ的意思了、、
如题,如何将01串变成二进制流保存到txt中,如char *s = "010010010011011001"保存到a.txt中
------解决方案--------------------
这个不难啊,你只要每次读取8个字符 1/0 组成一个字节,然后进行运算
例: 00010010
0*128 + 0*64 + 0*32 + 1*16 + 0*8 + 0*4 + 1*2 + 0*1 = 18
你把 18 作为 byte类来处理,然后将byte[]写入文件就好啦。
注意: signed byte 和 unsigned byte的转换。这个转换取决与你的选择。
------解决方案--------------------
大概猜到LZ的意思了、、
- C/C++ code
unsigned int i=0; int counter=strlen(s); for(;i < s && i < 32;i++) { i = i << 1; i = i + (*(s + i) - '0'); } fprintf(fp, "%u", i); //若s没完则继续循环
------解决方案--------------------
文件的存取单位是字节,如果不够一个字节,也占一个字节
因为是二进制文件,保存存文本文件打开时可能显示的是乱码,
最好用二进制文件编辑器去查看文件内容
- C/C++ code
#include<stdio.h> void main(int argc,char **argv) { char c=0,*s = "110010010011011001"; int i; FILE *f=fopen("d:\\a.bin","wb"); if(f!=NULL) { while(*s!=0) { for(i=0;i<8;++i) { c=c<<1; if(*s==0)continue; if(*s=='1')c=c|1; ++s; } fwrite(&c,1,1,f); } fclose(f); } }