#gmp #bignum #math #byte-string #signed-integer #unsigned-integer #bytebit

no-std bigbit

实现了BigBit格式,允许以紧凑的方式存储任意大的数字

6个版本

0.0.8 2020年6月13日
0.0.7 2020年4月5日
0.0.3 2020年3月25日

967算法

每月31次下载

Zlib许可

110KB
2K SLoC

BigBit

Crates.io Docs.rs Build Status

这是BigBit标准的实现,用于以紧凑的方式表示任意大的数字和字符串。作者提供的唯一实现是BigBit标准——这个crate旨在使用惯用的Rust代码实现那里的功能。

简而言之,规范描述了3种格式

  • 头部字节 (HB),用于存储极大(但仍然有限)的有符号整数 小数,不丢失精度
  • 扩展头部字节 (EHB),用于存储任意大的有符号整数 小数,只要提供足够的存储空间,就不会丢失精度。
  • 链接字节 (LB),用于存储任意大的无符号整数,主要在扩展头部字节格式中直接使用来存储指数和额外的系数字节数量,但也适用于比UTF-8和UTF-16更好的字符串存储。

由于这是一个格式解析器,默认启用#![no_std],这意味着alloc是唯一的依赖项,允许你在独立环境中使用。

状态

目前,并没有完全实现BigBit标准,并且crate尚未准备好在生产环境中使用。也没有任何稳定性保证。以下已经完成的列表

  • 头部字节数字存储(尚未完成,只是一个占位符)
  • 链接字节数字存储和算术
  • 将链接字节转换为原始整数以及相反的操作
  • 使用格式化器以二进制、八进制、十进制和十六进制显示链接字节数字,以及使用专用方法以任意基(从2到36)显示其他基。
  • 借用链接字节(EHB 所必需)——一个不拥有其内容的链接字节编号,是 EHB 编号的切片(仍然是占位符)

以下是尚未完成的列表

  • 从原始整数和 f32/f64 创建 [E]HB 编号(很可能将在 0.1.0 版本中添加)
  • 扩展头字节格式(将在 0.0.x 版本中添加)
  • [E]HB 的算术运算(加法、减法、乘法和除法都由 BigBit 标准定义);主要问题是处理指数(将在 1.0.0 版本中标记,可能将在 0.x.x 版本中部分添加)
  • 使用链接字节编码的字符串(将在 0.0.x 版本中添加)
  • DebugDisplay 格式化 [E]HB(即将数字转换为调试友好的表示形式,如字节数组,或表示为十进制科学记数法或全记数法的字符串,以及其他数值表示法;简单的 DebugDisplay 十进制格式化将在 0.1.0 版本中添加,其余的将在 1.0.0 版本中计划)
  • 测试(计划在 0.1.0 版本中,但可能更早部分添加)

变更日志

完整版本历史记录可以在这里找到。

无运行时依赖

功能