正如标题所说,我对如何在Ruby中实现这一点感到有点迷失...有很多关于如何在C或C ++中完成此任务的主题。那里有任何红宝石专家可以参与其中吗?
答案 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#pack和String#unpack得到正确的位。
答案 1 :(得分:-2)
一个64位整数不等于两个32位整数。