我有一个从C程序收到的数字,它是负数:
-1771632774
应该是这个数字:
2523334522
我意识到这一定是由于从有符号整数到无符号整数的某种转换。现在,我在Ruby中有了这个负数,如何将其转换回未签名的版本?
答案 0 :(得分:3)
将负整数放入数组中。用参数pack
调用'L'
,该参数代表“ 32位无符号本机字节序(uint32_t)”。使用相同的参数调用unpack。最后,从数组中取出数字。
[-1771632774].pack('L').unpack('L').first
#=> 2523334522