首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

如何把01串变成二进制流保存到txt中

2012-06-14 
怎么把01串变成二进制流保存到txt中如题,如何将01串变成二进制流保存到txt中,如char *s 01001001001101

怎么把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的意思了、、

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);    }} 

热点排行