2015-05-22 6 views
0

Я начал изучать Ruby, и я застрял, я пробовал много вещей, но не могу решить проблему.Взятие первого байта длины строки

Я получил этот код в PHP:

chr(strlen("root") & 0xFF); 
chr(strlen("root") >> 8 & 0xFF);  

И мне нужно, чтобы изменить его на рубин.

Ruby's chr Функция не позволяет мне делать >> 8 & 0xFF или просто & 0xFF, я не знаю почему.

Я также не знаю, что это за функции, но я уверен, что мне нужны они, чтобы заставить мой код работать.

Если кто-нибудь может мне помочь, объясняя и давая мне правильную функцию, было бы здорово, спасибо.

ответ

0

Я не знаю, если я понял ваш вопрос правильно, но вы можете взять байты вашей строки как этого

string.bytes 

и вы будете иметь массив с каждым байтом. И, чтобы получить символ любых из этого байта, вы можете использовать

byte.chr 

Например:

bytes_array = "I want a byte".bytes 
=> [73, 32, 119, 97, 110, 116, 32, 97, 32, 98, 121, 116, 101] 

И, чтобы взять первые байты обратно полукокс,

bytes_array[0].char 
=> "I" 

Например, если вы хотите использовать символы из первых 4 байтов, вы можете сделать это:

string = "" 
bytes_array[0..3].each do |b| 
    string << b.chr 
end 

Вы будете иметь строку

=> "I wa" 

Я надеюсь, что помог в чем-то.