Kotlinx-Serialization-BFL:二进制固定长度序列化格式解析
Kotlinx-Serialization-BFL 是一种二进制序列化格式,为各种数据类型提供固定长度的二进制表示形式。
工作原理
BFL 通过预先定义可变长度数据类型(如列表、映射、字符串等)的最大长度,并在序列化后的数据末尾填充字节来实现固定长度。
支持的数据类型
- 布尔值
- 字节
- 短整型
- 整型
- 长整型
- 以上类型的组合类型
示例:字符串序列化
@Serializable
data class DataClassWithString(
@FixedLength([20]) val name: String,
val sugar: Int
)
在上述示例中,如果 name
字符串的长度小于 20,BFL 会先写入字符串长度信息,然后写入字符串内容,最后使用零字节填充剩余空间。sugar
字段则按照标准整型格式写入。
与 Protobuf 的比较
与 Protobuf 等使用可变长度编码的协议不同,BFL 为相同类型的变量分配固定的长度,从而简化了解析过程。
注意: BFL 协议需要预先定义数据结构的最大长度,因此不适合处理长度变化范围很大的数据。
112.17KB
文件大小:
评论区