Проблема со строкой

Я делаю сценарий на 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
Другие вопросы по тегам