Ответ 1
Вы можете использовать Array#pack
:
["666f6f626172"].pack('H*')
#=> "foobar"
H
- это директива для шестнадцатеричной строки (сначала сперва).
У меня есть строка, содержащая значения шестнадцатеричного кода символов ASCII, например. "666f6f626172"
. Я хочу преобразовать его в соответствующую строку ("foobar"
).
Это работает, но уродливо:
"666f6f626172".scan(/../).map(&:hex).map(&:chr).join # => "foobar"
Есть ли лучший (более сжатый) способ? Может ли unpack
быть полезным каким-то образом?
Вы можете использовать Array#pack
:
["666f6f626172"].pack('H*')
#=> "foobar"
H
- это директива для шестнадцатеричной строки (сначала сперва).
Стефан прибил его, но вот альтернатива, которую вы можете захотеть уложить в другое время и место:
"666f6f626172".gsub(/../) { |pair| pair.hex.chr } # => "foobar"