首页 > 解决方案 > 如何在 Ruby 中将有符号整数转换为无符号整数?

问题描述

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

-1771632774

应该是这个数字:

2523334522

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

标签: ruby

解决方案


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

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

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


推荐阅读