四时宝库

程序员的知识宝库

ESP32中如何使用BASE64编码(ESP32中如何使用BASE64编码解码在线)

ESP32中如何使用BASE64编码

BASE64是什么

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

我们拿来做什么

我们这里主要拿来用于ESP32的摄像头拍照功能。

ESP32调用摄像头拍照,然后获取图像数据,通过BASE64转码,通过MQTT发送到手机或者电脑浏览器上,这样就实现了拍照监控功能。

这样做应该是成本最低的监控功能了,不占用带宽,也不需要建立流媒体服务器什么的。

代码

为了方便我们使用Arduino核心的可用base64功能,我们首先需要加入base64.h库。

#include <base64.h>

转到设置功能,我们将首先打开一个串行接口,输出应用base64编码的结果。

Serial.begin(115200);

接下来,我们将对编码使用的任意字符串进行声明。

String toEncode = "Test encoding";

为了将base64编码应用于先前声明的字符串,我们只需要调用base64类的encode方法。此方法接收我们希望编码的字符串作为输入,并返回同样采用字符串形式的base64编码结果。

String encoded = base64::encode(toEncode);

但是请注意,编码方法属于一种静态方法。因此,我们无需创建base64类的对象来使用它。因此,我们能够简单地使用类名和C++范围解析运算符 (::)来访问此静态方法。

#include <base64.h>

void setup() {

Serial.begin(115200);

String toEncode = "Test encoding";

String encoded = base64::encode(toEncode);

Serial.println(encoded);

}

void loop() {}

最后,我们将结果打印输出至串口,以便我们在运行代码时对其进行分析。您可以查看以下最终代码,其中已包含此打印功能。



测试代码

如需测试代码,只需编译它并使用Arduino IDE将其上传到ESP32即可。该过程完成后,打开IDE串行监视器。您应该获得类似于图1中所示的输出,后者包含base64编码结果。

我们可以通过在此在线工具上解码我们程序的输出以确认结果正确。您应该得到原始字符串,如图2所示。

使用在线工具解码的ESP32 base64编码输出。


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接