在纯Lua中解析IEEE754双精度浮点数?

我有一个大小固定的双精度浮点数数组,编码格式为IEEE754,有人能指向任何能实现相关功能的Lua代码吗?

更新:我不能发布这个问题,因为它太短了,所以这里有一些我在解决问题的过程中编写的代码——这将二进制字符串转换为位字符串,如“0011000”。

-- 获取给定字节的位字符串
function byte2bits(i)
   local result=""
   for c=1,8 do
      nextByte = i % 2
      i = (i - nextByte)/2
      result = result .. nextByte
   end
   return string.reverse(result)
end

-- 从字节字符串获取位字符串
function str2bits(s)
   result=''
   for i = 1, string.len(s) do
      --print(string.byte(s, i))
      result=result .. byte2bits(string.byte(s,i))
   end
   return result
end

原文链接 https://stackoverflow.com/questions/9168049

点赞
stackoverflow用户13843098
stackoverflow用户13843098

经过8年,这个领域幸运地发生了变化:

这里有一个仍在更新的纯Lua库,它与其他struct库非常相似:https://luarocks.org/modules/deepakjois/vstruct

除了其他格式外,它还可以解析任意大小端的浮点数和双精度浮点数。

例如:

local readfloat = vstruct.compile("f4") -- 编译一个解析器,f4表示4字节浮点数
local results = {}
readfloat:read("aaaa",results) -- 可以返回一个新表格,也可以像这里一样重用一个表格
print(results[1]) -- 2.5984589414244e+20
2020-06-30 19:39:25