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 协议需要预先定义数据结构的最大长度,因此不适合处理长度变化范围很大的数据。

zip 文件大小:112.17KB