В рубин можно использовать String#unpack и Array#pack для них - и многие другие - преобразования.
Для изменения шестнадцатеричной строки в фактических байтов, вы можете поместить его в массив и использовать Array#pack
так:
['0001000000000002'].pack 'H*'
# => this will give: "\x00\x01\x00\x00\x00\x00\x00\x02"
Что вы получите строку с фактическими байт. Вы можете преобразовать это в массив байтов с помощью:
data = ['0001000000000002'].pack 'H*'
# => this will give: "\x00\x01\x00\x00\x00\x00\x00\x02"
data.bytes # => [0, 1, 0, 0, 0, 0, 0, 2]
P.S.
Класс Buffer
в Javascript используется, так как чистый Javascript не является бинарным.
Pure JavaScript Unicode дружественный, но не славный для двоичных данных. При работе с потоками TCP или файловой системой необходимо обрабатывать потоки октетов. Узел имеет несколько стратегий для управления, создания и потребления октетных потоков.
Исходные данные хранятся в экземплярах класса Buffer. Буфер похож на массив целых чисел, но соответствует распределению необработанной памяти вне кучи V8. Буфер не может быть изменен.
В Ruby для хранения двоичных данных можно использовать либо класс String, либо массив, so you will not find a designated "Buffer" class.
В примере:
"\x00\x01\x02" # => A string with 3 bytes, using Hex notation (00, 01, 02)
"\x00\x01\x02".bytes # => [1,2,3] An array with 3 bytes.
[1,2,3].pack('C*') # => "\x00\x01\x02" Back to the string
вы можете также использовать пакет для целых чисел (16bit), лонги (32bit) удваивается (64bit) и другие типы данных:
[1024, 2].pack('i*') # => "\x00\x04\x00\x00\x02\x00\x00\x00"
Это вопрос форматирования (добавьте пробел каждые 2 символа) или вы ищете эквивалент Ruby для класса «Буфер» Node.js (или один из его методов)? – Stefan
Привет, stefan, я ищу эквивалент ruby для node.js Buffer class –
@AjayMehra - в Ruby нет класса Buffer, по крайней мере, не в том же смысле, что javascript использует класс буфера. В Ruby мы используем Strings and Arrays для хранения двоичных данных. Я отредактировал свой ответ, чтобы отразить это. – Myst