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

我们知道文件本身就是一份二进制数据,不同类型的文件只是编码形式不同,对应的解读形式不同,无论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的文件,放在程序目录下,程序会将之读取,转化为二进制字符

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

  1. mysql 游戏服务器设计_游戏服务器之基于文件数据库和mysql数据库的db服务器设计...

    设计上: (1)文件数据库是用于处理游戏逻辑业务请求. (2)mysql数据库是用于处理运营后台查询请求. (3)备份业务是用于定时备份文件数据库文件. 本文目录: 1.角色数据更新请求 2.mysq ...

  2. 前端实现图片悬浮_悬浮图片之上效果实现

    其实很简单,就是一个margin-top的问题,但是需要relative的定位方式才能悬在上面. html部分 草帽的创新 聚集国内外优秀人才, 聚焦新技术及产品研究, 以开放互联的理念, 驱动企业创 ...

  3. 【python】图片处理_分割图片

    使用PIL的Image模块 打开目标图片 im = Image.open("image_path") 确定裁剪大小 box(x,y,x+w,y+h) 裁剪:传入一个元组作为参数.元 ...

  4. php 图片印章_给图片加字,印章在线生成

    给图片加字:http://pic.sdodo.com/ 粉丝身份证:http://id.igogo8.com/制作印章:http://www.makepic.com/print.php邮址图片生成:h ...

  5. 手机端扣扣浏览器图片居中_实现图片始终居中显示于浏览器窗口中心位置

    盒模型 在敲代码之前,首先建立一个盒模型,这让写代码的时候变得思路清晰. 本案例中,所要实现的是图片居中显示,超出浏览器窗口部分的图片隐藏.因此,盒模型如图: 图片以浏览器窗口作为定位元素,居中显示. ...

  6. python制作图片数据集_制作图片数据集

    在学习卷积神经网络的时候,遇到了cifar10图像数据集,用着挺好,但不想局限于固定的几种图像的识别,所以就有了自己制作数据集来识别的想法. 一.cifar10数据集. 据原网站介绍,数据集为二进制. ...

  7. java 图片爬虫_论坛图片爬虫的一种实现

    1背景 经常上贴图的论坛(Discuz!),每次打开帖子的时候,由于帖子的图片太多,每次都要等不少时间才能看到所有的图片,比较麻烦:同时经常会打开看过的帖子.为了解决这个问题,写了个小爬虫,定期把最新 ...

  8. mysql 存guid类型_从C#在MySQL中存储GUID

    弄清楚了.这是如何做 - 数据库架构 CREATE TABLE `test` ( `id` BINARY(16) NOT NULL, PRIMARY KEY (`id`) ) 码 string con ...

  9. mysql设置token有效期_记住我 token保存到数据库

    记住我 token保存到数据库 这里使用jpa+mysql org.springframework.boot spring-boot-starter-data-jpa mysql mysql-conn ...

最新文章

  1. PocketPC 全屏的实现
  2. 【Network Security!】NTFS安全权限(看不懂你来打我)
  3. 如何正确对待vb脚本里的session
  4. ruby连接mysql
  5. android开发超级群(500人)
  6. OpenGL小试牛刀第一季
  7. 认证授权方案之JwtBearer认证
  8. CentOS上安装MyCat-MySQL
  9. linux标准I/O——标准I/O介绍
  10. 网站服务器建立数据库连接时出错,WordPress提示建立数据库连接出错的解决办法...
  11. SpringBoot配置redis
  12. CenOS 6.0 安装NVIDIA GeFore GT 440 显卡驱动
  13. linux中的__setup的作用
  14. webstorm导致CPU占用率高
  15. BatchShell服务器批量管理工具功能介绍
  16. Presto Cannot write to non-managed Hive table
  17. java微信多客服_微信多客服聊天功能怎么实现?
  18. iOS小技能:监听H5页面goBack返回事件 网页监听APP返回键 (NavigationBackItemInjection)
  19. 是对计算机系统或其他网络设备进行,计算机信息系统是由计算机及其相关的和配套的设备、设施(含网络)构成的,按照一定的应用目标和规则对信息进行()等处理的人机系统。...
  20. [Power Query] 汇总表

热门文章

  1. Hbase的表查询操作
  2. 光猫机顶盒有路由鸿蒙吗,科普:为何网络机顶盒只能连接光猫端,不能连接路由器?...
  3. 【图神经网络】图分类学习研究综述[2]:基于图神经网络的图分类
  4. python怎么把程序挂在远端服务器_Python实现在远端服务器挂代码—发送定时天气预报至邮箱+每日一句(小白教程)...
  5. 转载--苹果是怎么吃到的?——职业规划,从了解自己开始
  6. c语言 simon 游戏,汉语课堂教学游戏推荐(上)
  7. 《业务安全大讲堂》——2022全年大回顾!
  8. Proverif分析handshake协议
  9. 笔记本计算机英文缩写是,“LT”是“Laptop That”的缩写,意思是“笔记本电脑”...
  10. 【Simulink教程案例12】基于BPSK+costas环载波同步的simulink建模与仿真分析