如何在Ruby中以两个32位整数存储64位整数

时间:2011-01-29 01:04:23

标签: ruby bit-manipulation

正如标题所说,我对如何在Ruby中实现这一点感到有点迷失...有很多关于如何在C或C ++中完成此任务的主题。那里有任何红宝石专家可以参与其中吗?

2 个答案:

答案 0 :(得分:4)

你在C中使用的相同语法适用于ruby,只需删除类型转换:

n = 0xFFFFFFFFEEEEEEEE
x = (n & 0xFFFFFFFF00000000) >> 32
y =  n & 0xFFFFFFFF
puts x.to_s(16)
# => "ffffffff"
puts y.to_s(16)
# => "eeeeeeee"
v = x << 32 | y
puts v.to_s(16)
# => "ffffffffeeeeeeee"

如果您需要将值设置为正好32位的块(即,您需要对某些外部数据文件或程序说二进制),那么您将需要使用Array#packString#unpack得到正确的位。

答案 1 :(得分:-2)

一个64位整数不等于两个32位整数。

http://en.wikipedia.org/wiki/Integer_(computer_science