标签: ruby
我需要将跟随的4字节整数转换为有符号整数,如:
输入65535值-1 输入65534值-2 输入65533值-3 等等...
我尝试了以下内容:
puts (65533).to_s(16) #=> fffd puts (65533).to_s(16).unpack('s') #=> doesn't work properly... return 26214
有人可以帮我处理上面的代码吗? 最诚挚的问候
答案 0 :(得分:3)
您可以pack将其作为无符号整数,然后unpack将其作为有符号整数:
pack
unpack
[65535, 65534, 65533].pack('S*').unpack('s*') #=> [-1, -2, -3]
S / s表示16位整数,您也可以将L / l用于32位或Q / {{1}对于64位。
S
s
L
l
Q