На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD
  
    > byteArray и его расчлененка
      есть byteArray dt, а именно пакет из 8 байт которые я получил по CAN. Пытаюсь разобрать его на элементы и собрать 3 числа (float, int16, int16)

      ExpandedWrap disabled
        print(dt) #тут печатает byteArray
        print([dt[0],dt[1],dt[2],dt[3]]) # а вот тут и далее ругается что индекс за пределами списка
        print([dt[4],dt[5]])
        print([dt[6],dt[7]])


      подскажите пожалуйста что не так ?

      а вот на будущее вопрос. Преобразования делаю так

      ExpandedWrap disabled
        angle = struct.pack('<f', [dt[0],dt[1],dt[2],dt[3]])
        Ax = struct.pack('<H', [dt[4],dt[5]])
        Ax = struct.pack('<H', [dt[6],dt[7]])


      Добавлено
      закрыта тема, сам накосячил, должно быть

      ExpandedWrap disabled
        print(dt) #тут печатает byteArray
        print([dt[0:4])
        print(dt[4:6])
        print(dt[6:8])
        Вообще-то байты в числа превращает unpack.

        Проще сделать всё одной строкой
        ExpandedWrap disabled
          dt = struct.pack('<fHH', angle, Ax, Ay)   # Для упаковки в байтовую строку
          angle, Ax, Ay = struct.unpack('<fHH', dt) # Для обратной распаковки
          Цитата amk @
          Вообще-то байты в числа превращает unpack.

          очепятался
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0237 ]   [ 15 queries used ]   [ Generated: 28.03.24, 16:21 GMT ]