我以十六进制格式接收和IoT温度信息: 0x41d39ce6 但我需要将它转换为浮点值,如下所示: 26.451610565185546875 这是我现在的ruby代码:
event.set('[ln_temperature]',event.get('[ln_temperature_B_inversion]').to_s.hex)
'ln_temperature_B_inversion'
变量为41d39ce6
提前感谢您的帮助。
答案 0 :(得分:3)
["41d39ce6"].pack("H*").unpack("g").first
# => 26.451610565185547
你的十六进制字符串是big-endian标准的32字节浮点数。使用Array#pack
从十六进制中获取字节字符串,然后使用String#unpack
将其转换为浮点数。