当前位置:  技术问答>linux和unix

!!!内存中二进制数据直接以二进制格式输出出来

    来源: 互联网  发布时间:2016-01-23

    本文导语:  如何把内存中的二进制文件直接以二进制格式输出出来(即:输出到某文件中是以二进制格式保存) 我想把一个图片文件按照base64编码协议重新编码, 但是,base64编码协议是对二进制数据进行编码的, 所以我考虑把图片文...

如何把内存中的二进制文件直接以二进制格式输出出来(即:输出到某文件中是以二进制格式保存)

我想把一个图片文件按照base64编码协议重新编码,
但是,base64编码协议是对二进制数据进行编码的,
所以我考虑把图片文件从内存中直接读出它的二进制文件
然后存储在某个文件中,
当然我在文件中能看到的形式就是二进制格式的.
怎么来实现呢?
我用fwrite试了很多次都不行.

请高人指点!

|
假设你从文件读进来的数据是:
0x00 0x00 0x00 0x41
一共四个字节,假设是小端字节(对于基于intel i386架构的计算机,系统采用小端字节序来存放数据,所谓小端字节序是指低序字节低地址,高序字节高地址(内存地址增大方向)),那么这四个字节转换成int就是65,同理,你按顺序将这4个字节写入文件,以后读入就是一个65的int。

如果无需考虑数据的具体含义,只是将其看做二进制数据的序列,那么只要按字节一个个写入文件即可,像这样:
char* buffer = {0x01, 0x20, 0x00, 0x30, 0x02, 0x30};
int size = 10;
fwrite(buffer, size, 1, fp);
上面的buffer指向的数据就可以是你说的内存中的二进制数据。

上面说的不知道说清除没有。不过也许你在什么地方没搞清楚,你的需求其实不复杂,将图片读到buffer中,对buffer的数据进行base64编码,编码数据存到文件或者另一个buffer,即可。

我猜想你对所谓的二进制有曲解,从某种意义上说,所有的计算机处理的数据都是二进制的,所以,你说的“base64编码协议是对二进制数据进行编码的”其实有点误入歧途。实际上可能没有你想的那么复杂。



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我执行top命令,显示出来所有进程占内存都不超过1%,可是512M内存只剩30多M,为什么?
  • AIX上可以new出来的内存有没有限制?
  • 哪位老大帮我贴一个共享内存的例子出来(可以调通的),一定给分!
  • C++ Vectors 成员 get_allocator():返回vector的内存分配器
  • 我的机器内存128 ,安装redhat9 后,可用内存很少了,如何节省内存呢?
  • C++ Vectors 成员 capacity():返回vector所能容纳的元素数量(在不重新分配内存的情况下)
  • 奇闻:Apache+Apache JServ 1.1.1+1G内存居然报内存不够,那位高友知道参数设置,把俺的1G内存都利用起来,感激不尽啊
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 怎样读取指定内存地址处指定长度的内存数据???(
  • C/C++内存池实现介绍及基本要求
  • 【操作系统虚拟内存和物理内存疑惑】
  • linux下free命令显示的内存使用情况分析
  • 请教一个关于内存分配的问题(系统和DMA共享一块物理内存空间)
  • c/c++内存堆分配和栈分配理解
  • Solaris下如何获得物理内存和虚拟内存的大小?
  • Ubuntu查看内存,进程相关命令介绍
  • 程序需要共享内存相当大,但是系统的内存有限
  • Linux 共享内存介绍及实现代码
  • 关于大于2G内存的使用.....按32位编译的进程怎么使用大于2G的内存?
  • Linux内存文件系统(ramdisk)的三种实现方式
  • redhat9内存使用率高达73%,怎么查看内存具体使用情况
  • Microsoft IE MSHTML内存破坏远程代码执行漏洞
  • 遇到奇怪的内存泄露问题,应用程序杀死内存无法释放!
  • Microsoft Internet Explorer内存破坏漏洞(CNVD-2013-13096)
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3