0

我有一组描述 ruby​​ 对象的十六进制值,我想将它们全部串到一个位桶中。在 C++ 中,我会执行以下操作:

int descriptor = 0 // or uint64_t to be safe
descriptor += (firstHexValue << 60)
descriptor += (secondHex << 56)
descriptor += (thirdHex << 52)
// ... etc
descriptor += (sixteenthHex << 0)

我想在 Ruby 中做同样的事情,但由于 Ruby 是无类型的,我担心溢出。如果我尝试在 Ruby 中做同样的事情,有没有办法确保descriptor包含 64 位?一旦设置了描述符,我不想突然发现只表示了 32 位,我已经失去了一半!我怎样才能安全地达到与上述相同的结果?

注意:如果相关,请在 OS X 64 位上工作。

4

1 回答 1

4

Ruby 有无限的整数,所以不用担心。你不会失去一丁点。

a = 0

a |= (1 << 200)

a # => 1606938044258990275541962092341162602522202993782792835301376
于 2013-01-18T05:32:08.457 回答