在许多Base64用例中,在传输之前,我注意到了许多编码为Base64的有效负载数据。特别是在LPWAN (LoRa,LTE,NBIoT Sigfox等).为了简单起见,发送JSON有效负载非常有意义。另外,我的理解是,Base64编码为有效负载大小增加了一些额外的权重,对于低带宽使用情况,这似乎有违直觉。
有人能解释一下在Base64 (或其他)应用程序中使用IoT的好处吗?谢谢!
发布于 2022-06-20 10:19:06
base64通常用于编码二进制格式。由于二进制是计算机中数据的本机表示,因此它显然是资源受限的嵌入式设备最容易处理的格式。它也相当紧凑。
作为一种算法,base64在概念上相当简单,需要很少的资源才能实现,因此它是通过纯文本通道压缩二进制数据的一个很好的折衷方案。另一方面,构建JSON记录通常需要一个JSON库,它消耗内存和代码空间--不是很可怕,但仍然比base64更多。
更别提你提到的数据通道对带宽的渴求了。例如,公共LoRaWAN部署以允许设备每天发送几十个字节的数据而臭名昭著。
如果我想编码一个数据记录,比如32位时间戳,一个8位代码,指定数据类型(即温度、电压或压力)和32位数据示例:
struct {
time_t time;
uint8_t type;
uint32_t value;
}这将使用9个字节。使用base64编码后,它将增长到大约12个字节。
将其与一个简单的JSON记录进行比较,JSON记录在去掉所有空格后为67字节:
{
"time": "2012-04-23T18:25:43.511Z",
"type": "temp",
"value": 26.94
}所以12B或67B-对带宽匮乏的数据信道的竞争并不激烈。在一个LoRaWAN链接,这可能使压缩到您宝贵的上行链路插槽5-6数据记录或1数据记录之间的区别。
关于数据压缩--在资源受限的嵌入式设备上,将数据编码为紧凑的二进制文件要比将其转换为冗长的格式和压缩格式要实用得多。
https://stackoverflow.com/questions/68891169
复制相似问题