Проблема со строкой
Я делаю сценарий на Ruby, чтобы прочитать некоторые файлы пакета и посмотреть, что они содержат. Я написал этот очень простой сценарий вчера, который вызывает у меня головную боль:
arch = File.new(*file_name*, "r")
z = arch.sysread(1).unpack('H*')
puts z
content = arch.sysread(32)
Переменная z
выше имеет значение 10. Если я передам это в sysread
Я получаю ошибку, но если я определяю переменную x
и присвоить ему значение десять и передать, что он работает нормально.
Почему я не могу пройти z
в sysread
?
1 ответ
Прочитать файл как бинарный, с "rb"
вместо "r"
, а вы сказали, что выдает ошибку, какая ошибка?
Во всяком случае, unpack
функция возвращает Array
в этом случае с шестнадцатеричным числом в качестве строки. Вы, вероятно, хотите сделать это: content = arch.read(z.first.to_i(16))
,
Этот код имеет больше смысла (если вы пытаетесь сделать то, что я думаю):
arch = File.open("filename", "rb") # open the file as binary
z = arch.read(1).bytes.first # get the first byte as a integer
content = arch.read(z) # read the next z bytes