Как сохранить 64-разрядное целое число в двух 32-разрядных целых числах в Ruby - PullRequest
1 голос
/ 29 января 2011

Как видно из названия, я немного растерялся, как это сделать в Ruby ... Есть множество тем, как это сделать на C или C ++.Любые эксперты по рубину, которые могут вмешаться в это?

Ответы [ 2 ]

4 голосов
/ 29 января 2011

Тот же синтаксис, который вы использовали бы в 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 , чтобы получить правильные биты.

0 голосов
/ 29 января 2011

одно 64-битное целое число не равно двум 32-битным целым.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...