Преобразование строки в шестнадцатеричную в Ruby

Я пытаюсь преобразовать двоичный файл в шестнадцатеричный с помощью Ruby.

На данный момент я имею следующее:

File.open(out_name, 'w') do |f|
  f.puts "const unsigned int modFileSize = #{data.length};"
  f.puts "const char modFile[] = {"
  first_line = true
  data.bytes.each_slice(15) do |a|
    line = a.map { |b| ",#{b}" }.join
    if first_line
      f.puts line[1..-1]
    else
      f.puts line
    end
    first_line = false
  end
  f.puts "};"
end

Вот что генерирует следующий код:

const unsigned int modFileSize = 82946;
const char modFile[] = {
 116, 114, 97, 98, 97, 108, 97, 115, 104, 0, 0, 0, 0, 0, 0
, 0, 0, 0, 0, 0, 62, 62, 62, 110, 117, 107, 101, 32, 111, 102
, 32, 97, 110, 97, 114, 99, 104, 121, 60, 60, 60, 8, 8, 130, 0
};

Мне нужно следующее:

const unsigned int modFileSize = 82946;
const char modFile[] = {
 0x74, 0x72, etc, etc
};

Итак, мне нужно иметь возможность преобразовать строку в шестнадцатеричное значение.

"116" => "0x74" и т.д.

Спасибо заранее.

5
задан fuzz 4 December 2011 в 23:14
поделиться