用数组存储二进制数据
有时候程序引用了多个资源文件,但是希望交付给用户的是单个可执行文件,那么就需要把资源文件打包到可执行文件中,一个简单的做法是这样的。
使用 xxd 工具将二进制文件转换成 unsigned char 数组
xxd 是一个 linux 系统上的命令行工具,可以把二进制文件转换成c语言里的 unsigned char 数组,用法是这样的:xxd -i 输入文件
windows上默认没有这个工具,可以自行安装。
然后就可以把数组粘贴到源码中了,需要用到这些二进制数据时,可以用fopen函数以二进制形式将数组写入到文件系统中。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>unsigned char buf[] = {0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65,0x74, 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x69, 0x6d,0x65, 0x0a, 0x0a, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x73, 0x65,0x74, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x74, 0x69, 0x6d, 0x65,0x6f, 0x75, 0x74, 0x28, 0x35, 0x29, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61,0x6c, 0x20, 0x74, 0x2c, 0x20, 0x73, 0x0a, 0x77, 0x68, 0x69, 0x6c, 0x65,0x20, 0x54, 0x72, 0x75, 0x65, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74,0x72, 0x79, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,0x73, 0x20, 0x3d, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x73,0x6f, 0x63, 0x6b, 0x65, 0x74, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,0x20, 0x20, 0x20, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x69, 0x6d, 0x65,0x2e, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6d, 0x65, 0x28, 0x27, 0x25,0x48, 0x3a, 0x25, 0x4d, 0x3a, 0x25, 0x53, 0x5c, 0x6e, 0x27, 0x2c, 0x20,0x74, 0x69, 0x6d, 0x65, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x74, 0x69,0x6d, 0x65, 0x28, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,0x20, 0x20, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x28,0x28, 0x27, 0x31, 0x37, 0x32, 0x2e, 0x31, 0x37, 0x2e, 0x31, 0x37, 0x2e,0x31, 0x31, 0x36, 0x27, 0x2c, 0x20, 0x36, 0x30, 0x30, 0x30, 0x29, 0x29,0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x72, 0x69,0x6e, 0x74, 0x28, 0x27, 0x5b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5d,0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,0x2e, 0x73, 0x65, 0x6e, 0x64, 0x28, 0x62, 0x79, 0x74, 0x65, 0x73, 0x28,0x74, 0x2c, 0x20, 0x27, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x27, 0x29, 0x29,0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20,0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73,0x20, 0x65, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,0x70, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x27, 0x7b, 0x30, 0x7d, 0x20, 0x7b,0x31, 0x7d, 0x27, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x65,0x2c, 0x20, 0x74, 0x29, 0x2c, 0x20, 0x65, 0x6e, 0x64, 0x3d, 0x27, 0x27,0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x6c,0x79, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,0x2e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x28,0x31, 0x30, 0x29, 0x0a
};int main() {FILE *file = fopen("c:\\users\\asus\\desktop\\output", "wb");fwrite(buf, sizeof(unsigned char), sizeof(buf) / sizeof(unsigned char), file);fclose(file);return 0;
}
用数组存储二进制数据相关推荐
- Java的知识点18——数组存储表格数据、冒泡排序的基础算法、冒泡排序的优化算法、二分法查找
数组存储表格数据 package cn.dym08; import java.util.Arrays; public class Test09 {public static void main(Str ...
- wxWidgets随笔(9)-utf8~wxString存储二进制数据(4)
使用wxString存储二进制数据 可以使用函数wxString::To8BitData和wxString::From8BitData来存储二进制数据(即使它包含空值). 注意,即使允许使用NUL字符 ...
- 从零开始学java(二十六)--多维数组,多维数组存储表格数据
从零开始学java(二十六)--多维数组 多维数组 多维数组存储表格数据 多维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(学习 ...
- mysql blob longblob_MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
<MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)>要点: 本文介绍了MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理 ...
- javascript 类型数组读取二进制数据
先建一个文件,按UTF-16大端 BOM 格式保存一个字符串:hi aleck, 使用 file API 把他按二进制方式读取到浏览器. 文件读取方法在这里: http://hi.baidu.com/ ...
- mongodb存储二进制数据的二种方式——binary bson或gridfs
python 版本为2.7 mongodb版本2.6.5 使用mongodb存储文件,可以使用两种方式,一种是像存储普通数据那样,将文件转化为二进制数据存入mongodb,另一种使用gridfs,咱们 ...
- C++ MySQL存储二进制数据、存储照片
版权声明:本文为CSDN博主「intfre」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/nibiru_ho ...
- 微软字节javascript 类型数组读取二进制数据 -java教程
每日一贴,今天的内容关键字为微软字节 先建一个文件,按UTF-16大端 BOM 格式存保一个符字串:hi aleck, 用使 file API 把他按二进制方法取读到浏览器. 文件取读方法在这里: h ...
- C# 将对象转换成字节数组(二进制数据)
在将自定义对象或者数组等这样的数据存储到数据库时往往需要转换成二进制字节,尤其是在一些O/RM数据库框架中,下面是转换的函数,一个是将对象转换成二进制字节数组,另一个是将从数据库中读取的二进制流转换成 ...
最新文章
- 判断SIM卡属于哪个移动运营商
- LeetCode----13. 罗马数字转整数
- 读取SSDT表和原函数地址
- SAP Netweaver gateway framework序列化
- FTP上传下载使用ASCII与binary的区别
- win7计算机记忆窗口,Win7系统关闭和打开搜索记忆功能的方法(图文教程)
- 为什么有那么多人选择Python,真的有那么好吗?
- 再谈mysql之执行计划explain
- sqlplus基本使用
- 我的数学之美(一)——RANSAC算法详解
- ascii码所有字符对照表(包含汉字和外国文字)
- Vscode 快速打开setting.json
- 服务器2003如何修复0,Windows Server 2003 SP2补丁无法安装解决方法(密钥无效)
- c语言3x3矩阵转置 数组指针 接口(int(※p)[3],int n)
- Git push基础用法
- 使用poi导出excel生成复杂多级表头通用方法
- webstorm注册码 破解,长期有效
- html页面中该插件不受支持,该插件不受支持怎么解决
- 面对不同种类的处理结果——result type=
- 7-2 求π的近似值
热门文章
- linux 运行多个docker,Docker 中如何连接多个 Container 协同工作
- 成功解决ValueError: Cannot feed value of shape (80, 15, 1, 1) for Tensor 'Placeholder_1:0', which has sh
- Dataset之HiggsBoson:Higgs Boson(Kaggle竞赛)数据集的简介、下载、案例应用之详细攻略
- Excel:解决Excel表格每一行所有字段在一个单元格的情况
- Py之qrcode:调用python的qrcode库两种方式生成二维码、带logo的二维码
- 蓝桥杯_算法训练_ALGO10_集合运算
- customize shell prompt
- 关于Jdk7与Jdk8对Collections进行分组的区别
- SQL Server 查找统计信息的采样时间与采样比例
- C# using的用法