0

Ruby でオブジェクトを記述する 16 進値のグループがあり、それらをすべて 1 つのビット バケットにまとめたいと考えています。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で同じことをしようとすると、descriptor64ビットが含まれていることを確認する方法はありますか? 記述子が設定されたら、32 ビットしか表現されておらず、その半分が失われていることに突然気付きたくありません! 上記と同じ結果を安全に達成するにはどうすればよいですか?

注: 関連する場合は、OS X 64 ビットで作業します。

4

1 に答える 1

4

Rubyには無制限の整数があるので、心配しないでください。あなたは1ビットを失うことはありません。

a = 0

a |= (1 << 200)

a # => 1606938044258990275541962092341162602522202993782792835301376
于 2013-01-18T05:32:08.457 に答える