c/c++语言开发共享如何以二进制forms将二进制字符串存储在文件中?

我在存储二进制字符串时遇到问题。 如何以二进制forms将二进制字符串“100010101010000011100”存储在使用C的文件中?

除了一个字符串,如果我有两个字符串,我怎么能将这两个字符串存储在一起? 谢谢你的帮助。

    您可以将8位填充到unsigned char变量中并将其写入文件。

     unsigned char ch=0; char bin[] = "100010101010000011100"; int i=0; while(bin[i]) { if(i%8 == 0) { // write ch to file. ch = 0; }else { ch = ch | (bin[i] - '0'); ch = ch << 1; } i++; } 

    嗯,我不确定我是否理解你的问题。 您是否要求使用C将字符串存储在文件中,或者您是否要求最佳方法对文件存储的二进制数据进行编码?

    如果是前者,我建议以下资源:

    如果是后者,那么有很多编码方法和标准,但坦率地说,我不明白你为什么不直接存储你的二进制字符串。

    编辑:再考虑一下,显而易见的解决方案是将二进制数转换为整数或hex并存储。

    打开文件以便以二进制模式写入。

    将二进制字符串转换为整数并将其写入文件

    这个支持任意长度的二进制字符串,但当然有很多不足之处,尤其是 在考虑从文件中读回。 :)尽管如此,对于首发应该足够好了。

     #include  #include  #include  char A[]="111100000000111111"; int main() { unsigned int slen = strlen(A); unsigned int len = slen/8 + !!(slen%8); unsigned char * str = malloc(len); unsigned int i; for (i = 0; i < slen; i++) { if (!(i%8)) str[i/8] = 0; str[i/8] = (str[i/8]<<1) | (A[i] == '1' ? 1 : 0); } if (slen%8) str[len-1] <<= (8-slen%8); int f = open("test.bin", O_CREAT | O_TRUNC | O_WRONLY, S_IRWXU); write(f, str, len); close(f); }; 

      以上就是c/c++开发分享如何以二进制forms将二进制字符串存储在文件中?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560164.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐