ByteArray模块
字节数组容器,提供基础类型的序列化与反序列化功能。
github
https://github.com/huxiaohei/tiger.git
实现
ByteArray
的底层存储是固定大小的块,以链表形式组织。每次写入数据时,将数据写入到链表最后一个块中,如果最后一个块不足以容纳数据,则分配一个新的块并添加到链表结尾,再写入数据。ByteArray
会记录当前的操作位置,每次写入数据时,该操作位置按写入大小往后偏移,如果要读取数据,则必须调用set_position
重新设置当前的操作位置
ByteArray
支持基础类型的序列化与反序列化功能,并且支持将序列化的结果写入文件,以及从文件中读取内容进行反序列化。ByteArray
支持以下类型的序列化与反序列化
- 固定长度的有符号/无符号
8
位、16
位、32
位、64
位整数 - 不固定长度的有符号/无符号
32
位、64
位整数 float
、double
类型- 字符串,包含字符串长度,长度范围支持
16
位、32
位、64
位 - 字符串,不包含长度。
压缩算法与编码格式
ByteArray
在序列化不固定长度的有符号/无符号32
位、64
位整数时使用了zigzag
算法ByteArray
在序列化字符串时使用TLV
中的Length
和Value