日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用数组存储二进制数据

發布時間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用数组存储二进制数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有時候程序引用了多個資源文件,但是希望交付給用戶的是單個可執行文件,那么就需要把資源文件打包到可執行文件中,一個簡單的做法是這樣的。

使用 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; }

總結

以上是生活随笔為你收集整理的用数组存储二进制数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。