如何在Ruby中将有符号整数转换为无符号整数?

时间:2018-07-09 16:24:49

标签: ruby

我有一个从C程序收到的数字,它是负数:

-1771632774

应该是这个数字:

2523334522

我意识到这一定是由于从有符号整数到无符号整数的某种转换。现在,我在Ruby中有了这个负数,如何将其转换回未签名的版本?

1 个答案:

答案 0 :(得分:3)

将负整数放入数组中。用参数pack调用'L',该参数代表“ 32位无符号本机字节序(uint32_t)”。使用相同的参数调用unpack。最后,从数组中取出数字。

[-1771632774].pack('L').unpack('L').first
#=> 2523334522

http://ruby-doc.org/core-2.4.0/Array.html#method-i-pack