2014-12-19 4 views
3

Я хотел бы получить ключ о том, как я могу получить рубин работать с байтовых массивовByte операции в Руби

Код ниже C#:

int t = (GetTime()/60) //t is time in seconds divided by 60s (1 min) 
byte[] myArray = new byte[64]; 
myArray[0] = (byte)(t >> 24); 
myArray[1] = (byte)(t >> 16); 

Любая идея, как я могу получить это работать в Ruby?

+0

Что вы пытаетесь? В Stack Overflow вы должны показать нам, что вы написали, объяснить, почему это не сработало, и мы поможем вам исправить это. Как есть, похоже, что вы ничего не пробовали и хотите, чтобы кто-то написал его для вас, что не так хорошо, потому что Stack Overflow не является сервисом преобразования кода. –

ответ

1

Одним из способов было бы работать с массивами целых чисел и использовать Array#pack, чтобы упаковать результат в двоичную строку. Например.

[65, 66, 67].pack('C*') 

Возвращает ABC

Другим способом было бы манипулировать строку непосредственно, когда кодирование устанавливается в «ASCII-8bit»

0

Рубин может сделать битовые операции, и вы можете использовать обычный массив, поэтому я не вижу проблемы. Я не использую C# в данный момент, поэтому я не могу проверить, совпадают ли результаты.

t = Time.now.to_i/60 #t is time in seconds divided by 60s (1 min) 
myArray = [] 
myArray[0] = t >> 24 
myArray[1] = t >> 16 
p myArray #=>[1, 360]