В настоящее время я пытаюсь читать двоичный файл в кусках, и мое решение до сих пор было так:Чтение двоичных байт за байтом в Рубине
first_portion = File.binread(replay_file, 20)
second_portion = File.binread(replay_file, 24, 20)
Если первое число этого количества байт для чтения а второй - смещение.
Я знаю, что это плохо, потому что File.binread закрывает файл каждый раз после возвращения. Как я могу открыть файл один раз, сделать то, что я есть с, а затем закрыть его, когда я закончил (но все еще использую binread).
Кроме того, еще один маленький вопрос. Я смотрел на несколько примеров этого в питона и видел это:
UINT32 = 'uintle:32'
length = binary_file.read(UINT32)
content = binary_file.read(8 * length)
Что именно это делают (как это работает), и что бы это выглядеть в Ruby?
Спасибо, вы были невероятно полезны. – Fianite
Один быстрый вопрос: как изменилась бы первая строка во втором ответе, если бы я имел дело с UINT64 или FLOAT32? UINT64 будет 8 байтов, FLOAT32 будет 4 байта, это все, что изменится? Кроме того, почему в первую очередь необходимо? – Fianite
@Fianite 'unpack' имеет еще много вариантов. Прочитайте это. – tadman