浮点值(IEEE 32和64位)使用编码 固定长度的大端编码(7位用于避免使用保留的 字节如0xFF):
这些段落来自Smile Format spec(类似JSON的二进制格式)。
这意味着什么?是否有一些标准方法来编码IEEE floating point(单精度和双精度),以便编码的字节在0-127范围内?
更一般地说:我认为,在标准二进制表示中,没有保留或禁止的字节值,IEEE浮点数可以包括256个可能的字节中的任何一个。当然,是否有任何标准的二进制编码(或技巧),以便一些字节值/ s永远不会出现(例如,在字符串的UTF8编码中,一个有一些禁止的字节值,如0xFF)?
(我想这意味着要么失去一些精度,要么使用更多的字节。)
答案 0 :(得分:2)
我不知道这种格式的细节,但它看起来像是一种数据结构的序列化。当然,由于最终结果是字节流,您应该能够识别来自其他元数据的值。可能他们将第7位用作特殊位,然后应该避免任何误解字节值。这就是“传播”一个IEEE fp号码(五个,单个)字节的原因,其中只有七个比特实际用于该值。
我应该阅读格式规范,所以我试图“推断”他们将要做的事情。然而,这种编码通常是在低级(例如嵌入式)编程中。