Ruby将十六进制转换为整数(16位带符号)

时间:2019-02-11 22:14:56

标签: ruby ruby-on-rails-5

我正在开发一种软​​件,该软件使用带红宝石的RFID读取器,并在打开插座并获得标签后,使用以下命令将数据转换为十六进制:


    while line = s.gets
      puts line.unpack('H*').to_s
    end

然后我得到一个标签的“ a55a0019833400393939393939303030303232 fd6f 02080d0a”。

RFID阅读器用户手册告诉:

备注:RSSI表示为补码,共16位,是实际值的10倍。例如,实际值为-65.7dBm,则RSSI = fd6f

我找到了在线计算器(mathsinfun和calc.penjee.com),可以在其中将fd6f转换为-675。

我想知道如何在Ruby 2.3.1中进行此转换以继续我的项目。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

s>是16位无符号大端数字的正确解包符号,因此:

"\xfd\x6f".unpack('s>')[0] / 10.0

结果是:

-65.7