我正在开发一种软件,该软件使用带红宝石的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中进行此转换以继续我的项目。
任何帮助将不胜感激。
答案 0 :(得分:1)
s>
是16位无符号大端数字的正确解包符号,因此:
"\xfd\x6f".unpack('s>')[0] / 10.0
结果是:
-65.7