2011-01-29 14 views
1

タイトルによれば、Rubyでこれを達成する方法は少し失われています... Cでこれを行う方法についてはいくつかのトピックがありますまたはC++。これにチャイムできるルビーエキスパートは誰ですか?Rubyで2つの32ビット整数に64ビット整数を格納する方法

+0

値を格納しようとしているだけですか、値を2つの32ビット整数として表現しようとしていますか?つまり、データを取得して半分に分割しようとしているのですか、2つの32ビット値などで表される2つの64ビット値を追加するサポートもしたいですか? – templatetypedef

+0

後で問題は、トラッキングのためにサービスに渡す必要がある64ビット整数値があることです.32ビット整数値のみを受け入れるため、後で64ビット値を2 32ビット値に分割する必要があります私は一緒に再建することができます。 – Sam

答えて

4

、ちょうど型キャストをドロップ:

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を使用します。

-2

1つの64ビット整数が2つの32ビット整数と等しくない。

http://en.wikipedia.org/wiki/Integer_(computer_science)Cであなたが使用したいと同じ構文がルビーで動作

+1

ここでどうやってやっていますか? http://stackoverflow.com/questions/2810280/how-to-store-a-64-bit-integer-in-2-32-bit-integers-and-convert-back-again – Sam

+0

私はちょうど分割する必要があります64ビット整数、Cでの実行可能性をビットシフトによって理解できるものから – Sam

関連する問題