Common Lisp中浮点的字节表示



我正在尝试用Common Lisp编写一些东西,以读取和写入特定二进制格式的数据,这既是学习Lisp的一种方式,也是希望最终获得一个有用(或至少有趣(的工具。我从Practical Common Lisp中的解析器项目开始,并从那里开始构建。有一件事我不需要,那就是任意长度(以字节为单位(的浮点数。CL为无符号整数提供了ldb,从那里开始,有符号整数就不难构建了——有没有类似的有用功能可以用于获取和设置浮点数的符号、指数和分数分量?我不想为此使用库,因为部分目的是练习编写代码,但我也不想花时间重新实现已经内置的东西。

如果您正在读取二进制格式的浮点,则需要为其实现自己的解析器。它很可能是一个IEEE浮点编码的值。你可以在维基百科上找到你需要的所有信息:https://en.wikipedia.org/wiki/IEEE_754

根据在CL中获取浮点值的各个组成部分,您可以在这里使用各种函数:http://clhs.lisp.se/Body/f_dec_fl.htm

  • 解码浮点
  • 浮点基数
  • 浮动标志
  • 浮点数字
  • 浮动精度
  • 整数解码浮点

最新更新