TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #241 · 5 мај

Можно ли в Python создавать бинарные файлы? Конечно можно. Для этого в Python есть следующие инструменты: ▫️ тип данных bytes и bytearray ▫️ открытие файла в режиме wb (write binary) или rb (read binary) ▫️ модуль struct Про модуль struct поговорим в первую очередь. Файл в формате JSON или Yaml внутри себя содержит разметку данных. Всегда можно определить где список начался а где закончился. Где записана строка а где словарь. То есть формат записи данных содержит в себе элементы разметки данных. В binary-файле данные не имеют визуальной разметки. Это просто байты, записанные один за другим. Правила записи и чтения находятся вне файла. Модуль struct как раз и помогает с организацией данных в таком файле с помощью определения форматов записи для разных частей файла. Модуль struct преобразует Python-объекты в массив байт, готовый к записи в файл и имеющий определённый вид. Для этого всегда следует указывать формат преобразования (или, как оно здесь называется - запаковки). Формат нужен для того, чтобы выделить достаточное количество байт для записи конкретного типа объекта. В последствии с помощью того же формата будет производиться чтение. При этом следует помнить что мы говорим о типах языка С а не Python. Именно формат определяет, что записано в конкретном месте файла, число, строка или что-то еще. Вот какие токены формата у нас есть. Помимо этого, первым символом можно указать порядок байтов. На разных системах одни и те же типы данных могут записываться по-разному, поэтому желательно указать конкретный способ из доступных. Если этого не сделать, то используется символ '@', то есть нативный для текущей системы. В строке формата мы пишем в каком порядке и какие типы собираемся преобразовать в байты. Запакуем в байты простое число, токен "i". >>> import struct >>> struct.pack('=i', 10) b'\n\x00\x00\x00' Теперь несколько float, при этом нужно передавать элементы не массивом а последовательностью аргументов. >>> struct.pack('=fff', 1.0, 2.5, 4.1) b'\x00\x00\x80?\x00\x00 @33\x83@' Вместо нескольких токенов можно просто указать нужное количество элементов перед одним токеном, результат будет тот же. >>> struct.pack('=3f', 1.0, 2.5, 4.1) b'\x00\x00\x80?\x00\x00 @33\x83@' Теперь запакуем разные типы >>> data = struct.pack('=fiQ', 1.0, 4, 100500) я запаковал типы float, int и unsigned long long (очень большой int, на 8 байт) b'\x00\x00\x80?\x04\x00\x00...' Распаковка происходит аналогично, но нужно указать тот же формат, который использовался при запаковке. Результат возвращается всегда в виде кортежа. >>> struct.unpack('=fiQ', data) (1.0, 4, 100500) Как видите, ничего страшного! #lib#basic

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #underseacables

当前筛选 #underseacables清除筛选
Hong Kong Democracy Movement

@hkdmovement · Post #7916 · 04.12.2024 г., 05:56

立陶宛週五宣布驅逐三名中國大使館人員,限一周內離境,並向北京發送外交照會。自2021年立陶宛允許台灣設立代表處以來,兩國關係已惡化,最近因中國船隻涉嫌破壞波羅的海兩條海底光纜而進一步緊張。 立陶宛外交部表示,驅逐原因為「違反《維也納外交關係公約》及國際法」。立陶宛將與瑞典和芬蘭成立聯合調查小組,調查光纜被切斷事件。中共中國始終尋求干涉他國事務,甚至摧毀其他國家。 #立陶宛#波羅的海#海底電纜#russia#evilCCP#NeverTrustCCP#TakeDownCCP On Friday, Lithuania announced the expulsion of three Chinese embassy staff, ordering them to leave within a week and sending a diplomatic note to Beijing. Tensions have worsened since Lithuania allowed Taiwan to establish a representative office in 2021, and recently over allegations of Chinese ships sabotaging two undersea cables in the Baltic Sea. The Lithuanian Foreign Ministry cited "violations of the Vienna Convention and international law" as the reason for the expulsion. Lithuania will also form a joint investigation team with Sweden and Finland to probe the cable damage. Communist China is always seeking opportunities to interfere in other countries, even destroying them. #Lithuania#BalticSea#UnderseaCables#Russia#EvilCCP#NeverTrustCCP#TakeDownCCP