当前位置:首页 >时尚 >嵌入式算法之大数据变长存储算法 U16太小无法满足需求

嵌入式算法之大数据变长存储算法 U16太小无法满足需求

2024-05-17 01:46:29 [百科] 来源:避面尹邢网

嵌入式算法之大数据变长存储算法

作者:嵌入式系统 大数据 存储软件 算法 对于高精度采样结果,嵌入其数值最大可能需要3字节,式算最少1字节,法之法采用标准C的大数基础数据类型,U16太小无法满足需求,据变U32则浪费内存。长存储算当样本量很大时,嵌入其占用的式算空间问题便突显出来。能否采用变长数据类型存储呢?法之法

 1、应用场景

对于高精度采样结果,大数其数值最大可能需要3字节,据变最少1字节,长存储算采用标准C的嵌入基础数据类型,U16太小无法满足需求,式算U32则浪费内存。法之法当样本量很大时,其占用的空间问题便突显出来。能否采用变长数据类型存储呢?对小数据采用U8,大数据采用U32,随着数值大小动态分配存储空间,就是本文的讨论的重点。

2、数据去冗余

U32的空间其数值范围最大接近2^32,该值非常大,实际数值范围远小于它,高位必然为0。例如U32表示1使用0x00000001,前面位都是0,其表达的数值和U8的0x01是一样的,前面重复的一串0属于冗余数据区,是可以剔除的。

嵌入式算法之大数据变长存储算法 U16太小无法满足需求

假设5个数据D0..4,原本每个数据固定为U32类型,将其高位冗余0去掉,再拼接到U8的一维数组,则占用的空间和大大缩小。思路的核心是把 U32 或者U64 数组裁剪后拼接成U8 数组,同时确保使用时可

嵌入式算法之大数据变长存储算法 U16太小无法满足需求

嵌入式算法之大数据变长存储算法 U16太小无法满足需求

根据U8 数组中存储的信息将对应的数值还原。

假设有0x00000001、0x00000101、0x00000001三个数据,其有效部分是0x01、0x0101、0x01,如果直接拼接在一起,则没法区分0x01010101的含义。因此数据在去掉高位0之后,还需进行编码标记,便于后续解析还原。

3、数据编码

数据编码的主要作用是标记当前数据占用多少连续字节,有两种方案:

1、固定位来定义字节长度(2位可以表示4字节)

一字节:00

(责任编辑:探索)

    推荐文章
    热点阅读