用于 progmem 的C++和头文件压缩的 Web 文件字节数组
C++ and header file zipped web files byte array for progmem
我目前正在尝试一点一点地自学如何为nodeMCU编写WiFi接口。我正在使用我在 github 和其他不同地方找到的代码作为模板来了解每个部分的工作原理。
我现在被困住了,非常感谢帮助克服这个心理障碍。我花了很多时间开发html css和JavaScript代码以用于我的Arduino草图,但是了解这个模板如何将Web文件上传到SPIFFS会给我带来各种各样的问题。
#ifndef webfiles_h
#define webfiles_h
#define USE_PROGMEM_WEB_FILES
#ifdef USE_PROGMEM_WEB_FILES
const char indexhtml[] PROGMEM = {0x1f, 0x8b, 0x08, 0x08, 0xb6, 0x41, 0xf9, 0x5b, 0x02, 0xff, 0x69, 0x6e,...
#endif
void copyWebFiles(bool force){
#ifdef USE_PROGMEM_WEB_FILES
if(settings.getWebSpiffs()){
if(!SPIFFS.exists(String(F("/web/index.html.gz"))) || force) progmemToSpiffs(indexhtml, sizeof(indexhtml), String(F("/web/index.html.gz")));
}
#endif
}
#endif
上面的代码本质上是模板的作用。
我想做的是创建我的"webfiles.h",但我不明白的特定部分是看起来像这样的代码
const char indexhtml[] PROGMEM = {0x1f, 0x8b, 0x08, 0x08, 0xb6, 0x41, 0xf9, 0x5b, 0x02, 0xff, 0x69, 0x6e,...
问题:
如何将压缩的 html 文件转换为字节数组以在带有 progmem 的 webfiles.h 文件中使用
我试过:
转换为base64,但显然不一样。
这些是表示文件字节的十六进制数字。 https://www.tutorialspoint.com/computer_logical_organization/hexadecimal_arithmetic.htm https://www.electronics-tutorials.ws/binary/bin_3.html
0x 前缀表示该数字将解析为十六进制。 0xFF表示 255,0x100表示 256,依此类推。我们在打印字节时经常使用它,因为字节的最大值为 255 (0xFF(,因此您始终可以使用十六进制数字最多使用两个字符打印一个字节。使用正常的 base10 数字,我们必须写"255",它使用三位数字。这使得格式设置更简单。想象一下,您必须在彼此之后打印 6 个字节
十进制: 0 255 128 100 200 30
十六进制: 00 FF 80 64 C8 1E
看看十六进制如何更好地格式化?您可以使用两个字符表示任何字节。它们有时可能更难阅读,您只需要习惯它。
要自己生成文件的字节数组,您可以使用工具 HxD 并导出到 C 头文件。 https://mh-nexus.de/en/hxd/
自己创建一个工具来执行此操作也非常简单,我不久前在大约 50 行代码中做到了这一点。
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 用于 progmem 的C++和头文件压缩的 Web 文件字节数组
- 用于管理 CATIA 文件的 Web 应用程序
- 访问QT上的本地用户文件进行Web组件
- 将Web应用程序作为资源嵌入到Qt可执行文件C++
- C++实现文件缓存(如 Web 浏览器)的库
- 在 Web 浏览器上显示保存的文件
- 在web浏览器上流式传输c++文件
- 使用 QNetworkAccessManager 从 web 检索数据:文件已下载,但 QNetworkReply::r
- 从 Web UI 访问C++编译的可执行二进制文件
- 正在web服务器上执行C++对象文件
- 如何将多个gsoap客户端web服务编译成一个可执行文件
- 如何将web服务器上公共目录中的C++文件直接包含到IDE中
- 将文件从C/ c++应用程序发送到java Web应用程序
- c++ -上传文件到web服务器与多部分表单数据| WinSock2