[Ruby] Как разобрать двоичный файл?

Тим Алексеевский realtim на mail.ru
Пт Янв 14 22:40:57 MSK 2005


Dmitry N Orlov (Янв 15,  0:13):
> Телефония.
> Имеем некий файлик с разговорами с коммутатора. Запись = 187 байт. 
> Разнесены они по разным полям.
> Записей - может быть сколько угодня
> Требуется наваять парсер.
> Вопрос такий:
> 1. Как считывать по 187 байт
  f=File.new("testfile")
  s=r.read(187)

  (после этого еще проверить, что s длиной 187, может быть меньше, "если
  не хватает")

> 2. Как из затолкать в некую структуру, что сразу поля получились?
>  Типа первые 4 туда, вторые 4 - сюда, потом 8 еще воооон туда
  может unpack?
  Например:
  a=s.unpack("llq")

  (получится массив, его можно в hash распихать если нужно)
  t=["first-4", "second-4", "third-8"]
  h={}
  a.each_with_index{|v,i| h[t[i]]=v}

  (теперь первое поле например будет доступно как h["first-4"])

  Тим

-- 
++  Lead me not into temptation, I can find it myself.  ++
                                                        --


Подробная информация о списке рассылки Ruby