gpt4 book ai didi

ruby - 如何将 32 位二进制字符串转换为 ruby​​ 中的 float

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:36 28 4
gpt4 key购买 nike

我收到一个代表一组 32 位 float 的二进制字符串。从一系列 16 位 MODBUS 寄存器对中报告,其中第一个寄存器代表较低位,第二个寄存器代表较高位。我能够以一种极其丑陋的方式重新排列寄存器,然后解码为 float 。我希望这更具吸引力,但我没有完成这项任务。本质上,我将字符串解包为十六进制字符串数组,转换为字符串,将高位切片并将它们放在低位之前,然后将其转换为以 16 为底的整数,将其打包为 32 位整数,解包为一个 float ,然后选择数组中的第一个值。如果你不介意的话,最后一句话让我想哭。事不宜迟:

def read_dual_input_registers(addr, npairs)
@values = Array.new
result = <binary-string-returned-here>.unpack('H*').to_s

npairs.to_i.times do
register = result.slice!(4..7) + result.slice!(0..3)
@values.push([register.to_i(16)].pack('L').unpack('F')[0])
end
@values
end

最佳答案

这个有用吗?

t = <binary-string-returned-here>
result = (t[2..3] + t[0..1]).unpack('F')[0]

关于ruby - 如何将 32 位二进制字符串转换为 ruby​​ 中的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4775016/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com