Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/72: Рейтинг темы: голосов - 72, средняя оценка - 4.54
L_L
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 14

Как использовать struct.pack()?

01.12.2013, 23:47. Показов 14708. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Повторяю пример из книги Лутца

Python
1
2
3
4
5
6
7
8
>>> F = open(‘data.bin, ‘wb’) # Открыть файл для записи в двоичном режиме
>>> import struct
>>> data = struct.pack(>i4sh’, 7, ‘spam’, 8) # Создать пакет двоичных данных
>>> data
b’\x00\x00\x00\x07spam\x00\x08’
>>> F.write(data)
# Записать строку байтов
>>> F.close()
Но мне не удается создать пакет двоичных данных.
Выводит:
Python
1
2
3
4
Traceback (most recent call last):
  File "<pyshell#68>", line 1, in <module>
    data = struct.pack('>i4sh', 7, 'spam', 8)
struct.error: argument for 's' must be a bytes object
Объясните пожалуйста, почему у меня выводит ошибку ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.12.2013, 23:47
Ответы с готовыми решениями:

Как создать ip-заголовок через struct.pack?
После упаковки структуры, должна получиться строка длиной 20 байт. А получается 14 байт. Помогите правильно упаковать. TTL = 40 ...

Оставить все как есть || использовать парсер xml || или использовать struct
Собственно имеется код... #include &lt;io.h&gt; #include &lt;string&gt; #include &lt;vector&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; #include...

Неправильное преобразование в byte используя struct.pack
Здравствуйте! Имеется функция, преобразующая объект в последовательность байтов. Вот она: def __bytes__(self): surbyte =...

4
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.12.2013, 00:16
Точно не помню как называется этот символ, ну да ладно. В общем у тебя строковые литералы обрамлены не тем символом. Нужно использовать или двойные или ординарные кавычки.

Python
1
2
3
4
5
import struct
test_file = open('data.bin', 'wb') 
data = struct.pack('>i4sh', 7, 'spam', 8)
test_file.write(data)
test_file.close()
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.12.2013, 00:53
Цитата Сообщение от tsar925 Посмотреть сообщение
Точно не помню как называется этот символ
Python
1
2
3
4
>>> import unicodedata
>>> unicodedata.name('‘')
'LEFT SINGLE QUOTATION MARK'
>>>
2
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 1
08.05.2015, 21:07
data = struct.pack(b'>i4sh', 7, b'spam', 8) # Создать пакет двоичных данных
обратите внимание на то что бинарный режим! а на него указывает буква b: b'>i4sh'
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,753
25.10.2020, 11:37
А что означает i4sh?

Добавлено через 40 минут
Можете не отвечать https://docs.python.org/3/library/struct.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.10.2020, 11:37
Помогаю со студенческими работами здесь

Как использовать StructLayout Pack?
я знал, да что то позабыл как использовать StructLayout Pack? он же вроде определяет выравнивание, так что логично было бы его в 0 задать...

Как правильно использовать struct?
Написал небольшую, глупенькую программку, но столкнулся с проблемой заполнения структуры. Если kube.size вводит, то kube.color программа...

Как использовать собственный класс в структуре struct до определения самого класса в тексте программы
Проблема такая: хочу в структуре одним из элементов сделать класс. Проблема в том, что эта структура задается в самом начале текста...

Как исправить ошибку: Struct contents reference from a non-struct array object
Здравствуйте. Недавно начал работать с симулинк тест менеджером и еще не знаю всех тонкостей работы с ним. При создании Custom Criteria...

Html Agility Pack (При ненайденном элементе, использовать вместо Try Catch)
Делаю так: try { company = node.SelectSingleNode(&quot;./div/div/div/div/p/a&quot;).InnerText.Replace(&quot;&amp;nbsp;&quot;, &quot;&quot;); } catch { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru