Logstash Ruby在float中转换Hex表示

时间:2017-06-20 00:53:07

标签: ruby

我以十六进制格式接收和IoT温度信息: 0x41d39ce6 但我需要将它转换为浮点值,如下所示: 26.451610565185546875 这是我现在的ruby代码:

event.set('[ln_temperature]',event.get('[ln_temperature_B_inversion]').to_s.hex)

'ln_temperature_B_inversion'变量为41d39ce6

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

["41d39ce6"].pack("H*").unpack("g").first
# => 26.451610565185547

你的十六进制字符串是big-endian标准的32字节浮点数。使用Array#pack从十六进制中获取字节字符串,然后使用String#unpack将其转换为浮点数。