浮点值(IEEE 32和64位)使用固定长度的大端编码(7位用于避免使用像0xFF这样的保留字节):
这些段落来自微笑格式规范 (类似于JSON的二进制格式)。
这可能意味着什么?是否有标准的方法来编码IEEE浮点 (单精度和双精度),以便编码的字节在0-127范围内?
更一般地:我认为,在标准二进制表示中,没有保留或禁止字节值,IEEE浮点数可以包含256个可能的字节中的任意一个。当然,是否有任何标准的二进制编码(或技巧),使某些字节值/s永远不会出现(例如,在字符串的UTF8编码中,有一些禁止的字节值,如0xFF)?
(我猜这意味着要么失去一些精度,要么使用更多的字节。)
发布于 2015-01-24 15:46:07
我不知道这种格式的细节,但它似乎是一种数据结构的序列化。当然,由于最终结果是字节流,您应该能够从其他元数据中识别值。也许他们使用第7位是一个特殊的位,那么任何错误的字节值都应该被避免。这就是将IEEE fp号“散布”在一个字节(5个字节)上的原因,其中实际值只使用了7个位。
我应该阅读格式规范,所以我试着“推断”他们将要做的事情。然而,这种编码在低层次(例如嵌入式)编程中相对较多。
https://stackoverflow.com/questions/28127130
复制相似问题