返回

lua语言如何进行四字节16进制转换成浮点数问题利用某人的C语言浮点数转换工具,输入00 00 91 42 点击四字节字符-->浮点数,结果为72.5。如果使用lua来实现的话,貌似做不到。请问阁下有办法实现吗?利用如下代码,得出的结果与C实现的结果不相同:local function BinFloatToHexFloat(b1, b2, b3, b4) --二进制转十进制浮点数(传入参数从低到高位的四个字节) local sign = b4 > 0x7F --符号位 local expo = (b4 % 0x80) * 0x02 + math.floor(b3 / 0x80) --整数部分 local mant = ((b3%0x80)*0x100+b2)*0x100+b1 --小数部分 if sign then sign = -1 else sign = 1 end local n if mant == 0 and expo == 0 then n = sign * 0.0 elseif expo == 0xFF then if mant == 0 then n = sign * math.huge else n = 0.0/0.0 end else if (expo>0) and (expo<0xFF) then n = sign * math.ldexp(1.0 + mant / 8388608, expo - 0x7F) else n = sign * math.ldexp(0.0 + mant / 8388608, - 0x7E) end end print(n) return nendBinFloatToHexFloat(00,00,91,42)

名字: 自动排版 密码:

回复 | (3056) | Anthony Yoo | 2018-12-13 11:29:31