На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD
  
    > Парсинг бинарных данных , construct 2.9
      Есть библа construct v2.9, наткнулся на старый код парсинга на v2.5
      ExpandedWrap disabled
        from construct import *
         
        fmt = Struct('png',
            Magic(b'\x89PNG\r\n\x1a\n'),
            UBInt32('length'),
            Const(String('type', 4), b'IHDR'),
            UBInt32('width'),
            UBInt32('height')
        )
         
        data = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR' + \
            b'\x00\x00\x00\x9a\x00\x00\x00\x8d\x08\x02\x00\x00\x00\xc0'
         
        result = fmt.parse(data)
        print(result)

      надо перевести этот пример на 2.9

      https://construct.readthedocs.io/en/latest/
        Сам все порешал :D
        После глубокого изучения нового синтаксиса понял что он изи :D
        ExpandedWrap disabled
          fmt = Struct(
              'signature' / Const(b'\x89PNG\r\n\x1a\n'),
              'length' / Int32ub,
              'type' / Const(b'IHDR'),
              'width' / Int32ub,
              'height' / Int32ub,
              'bit depth' / Int8ub,
              'colour type' / Int8ub,
              'compression method' / Int8ub,
              'filter method' / Int8ub,
              'interlace method' / Int8ub
          )

        Смутил оператор деления, но покопав сорcы construct все встало на места! :D
        Сообщение отредактировано: Cfon -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0152 ]   [ 15 queries used ]   [ Generated: 19.03.24, 11:53 GMT ]