mysql存图片二进制文件_将图片(二进制文件)存储于数据库,论文件字节流与二进制字符串相互转换...

开发中遇到存储图片文件于数据库这样的需求。

我们知道文件本身就是一份二进制数据,不同类型的文件只是编码形式不同,对应的解读形式不同,无论txt文件、jpg文件亦或是mp4文件,本质上都是0和1组成的。而在C++中我们可以通过字节流来读写文件,也就是说我们可以把文件读入char数组中,也可以将char数组中的数据写入为文件。

开发中需要将图片存在数据库中,每个文件几KB,想将之存在数据库表的varchar类型中。大小不是问题,大的话就以text类型存储。关键是,C++读取的文件字节流的char数组是不能直接存储的,因为里面会含有很多‘\0’。如果按照字符串来理解,就是结束符了。那样一来存的内容就不完整了。

所以需要将文件字节流的char数组 转化为二进制字符串,再存储数据库。

从数据库读取后,再转化回文件字节流的char数组。

每一个char,其实就是一个字节,也就是8bit,每个bit是0或者1。我要做的就是读取每一位,将之转化为字符的'0'或者'1',再存储。

所以如果原本是N字节的文件,转化后大小为N*8。

下面是我文件字节流与二进制字符串相互转换的测试程序,参考了几篇文章,里面的程序我略有修改:

http://blog.csdn.net/k346k346/article/details/52170623

http://blog.csdn.net/pointer_y/article/details/51525679

将一个名为timg.jpg的文件,放在程序目录下,程序会将之读取,转化为二进制字符

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值