Можно ли в 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
⚡️
🇷🇺
🇺🇦⚔️ Ukraine Fronts on the Morning of 26 March⚡️
🔴#Sumy Direction:
🔴In #Sudzha Sector, to the west on Ukrainian lands, for a RFAF presence at #Vladimirovka evidence is still missing (1st blue arrow on map).
🟡 For #Veselovka, the battle continues (1st black arrow).
🟡 In #Zhuravka as well.
🟡#Basovka is at best 50% RFAF controlled.
🟡#Novenkoye, is Russian controlled (1st red arrow).
🟡 In #Kursk region, according to unconfirmed reports, the 'Sudza Gas Transmission Point' is under RFAF control and the battle for the nearby border checkpoint continues (4th black arrow).
🟡#Gogolevka remains under full AFU control (2nd blue arrow). Contrary reports are unproven.
🟡#Melovoy came under the control of Russian troops, which advanced further westwards towards #Oleshnya (2nd red arrow).
🟡#Oleshnya, #Guyevo and #Gornal remain under AFU control for now.
🔴In #KrasnayaYaruga Sector, the AFU 8th Special Forces Regiment and 'Aidar' Nationalists failed to take #Popovka (5th black arrow). Over the past day, the AFU razed the village to the ground with artillery and drones.
🟡 In #Demidovka, nearby to the southeast, Small AFU groups enter periodically, uncapable to take the village (6th black arrow).
🟡 At #Grafovka, lull.
🟡 West of #Prilesye, the AFU have been driven out from Russian territory.
🗺 All on Map 1
🔴 In #Kharkov Direction, positional battles continue In the areas of #Lipsy and #Volchansk. A large number of drones, artillery and aircraft are used.
🔴#Svatovo Front:
🔴 In #Kupyansk Sector, north of the city, Russian forces created a new bridgehead between #Kamenka and #Krasnoye1st. In the area of #Dvurechnaya, the battles continue, as well as on the #Zapadnoye - #Kalinovo line.
🔴 In #Borovaya, #Liman and #Seversk Sectors, without major changes.
🔴#ChasovYar Direction:
🔴In #ChasovYar Sector, heavy urban battles continue in 'Shevchenko Microdistrict' in the southern part of the city. To the south, fighting in the area of #Stupochki.
🔴In #Toretsk Sector, the RFAF continue attempts to take the city, increasing the pressure in its north.
🔴#Pokrovsk Direction:
🔴 On the right Flank, far to the east, Russian troops attack southwest of #Aleksandropol and try to straighten the front.
🔴 South of the City and on the left Flank, no changes.
🔴#Komar Direction:
🔴In #Konstantinopol Sector, the battle for the same named village continues.
🟡 Southeast of #Razliv, the RFAF advanced on a broad front, extending the zone of control in an area up to 4 km wide and up to 2.05 km deep, approaching the settlement located southwest of #Konstantinopol.
🔴 In #Komar Sector, Russian forces repulsed AFU counterattacks in the areas of the #Vesyoloye and #VolnoyePole settlements.
🔴#Zaporozhye Direction:
🔴In #Orekhov Section, the situation based on confirmed and evidenced data has improved for the RFAF:
🟡 In #Shcherbaki, the AFU lost full control.
🟡 In nearby #MalyeShcherbakito the west, the RFAF have advanced. The AFU still hold positions in its far northeast.
🟡 In #Stepovoye's, further west, there are heavy fights in the village.
🎬 Video 1
🗺 Map 2
🟡 In #Lobkovoye, the the RFAF advanced northwards. About 50% of the village came under Russian control.
🗺 Map 2
🟡 #Pyatikhatki, came under full RFAF control yesterday.
🗺 Map 2
🔴 In #Kherson Direction, no changes.
💥#OldRussia:
🔵 In #Belgorod Region, civil objects in #Politodelsky, #Kazinka, #Shebekino, #Tishanka and #Bessonovka came under AFU attack.
💥#RestUkraine:
🔵 The RFAF targeted AFU facilities and militants in #Zaporozhye, #Nikolayev and #Dnepropetrovsk, as well as in #Sumy, #Poltava and #Cherkassy regions.
🟡 In #KrivoyRog, more than 15 explosions occurred overnight.
🎬 Video 2
🎞 Vids Source 1; Source 2;
🗺 Maps @olegtsarov; @creamy_caprice
📋 Sources: CC; Tsarov; ⚡️2M;
🇺🇦Fiend;😼Kotenok
🕰As of 26 Mar 2025; 06:41 GMT+3;📃25 Mar
📱 Join GLOBAL DEPTH to boost your TG Feed
💬Join Military Chat for Comments & Discussions
🇺🇦On Ukraine Observer you will find your daily independent Ukraine War Battle Update
⚡️
🇷🇺
🇺🇦⚔️ Ukraine Fronts on the Morning of 3 April⚡️
🔴#Sumy Direction:
🔴In #Sudzha Sector, to the west, we assume that the video which recently emerged for Russian #Uspenovka {1st red↘️} was not actual. On Ukrainian soil reportedly:
🟡 In #Veselovka, the AFU counterattacked unsuccessfully.
🟡 At #Zhuravka, slight RFAF advance and fights in the centre.
🟡 In #Basovka, the battle continues with varying success.
🟡#Novenkoye - RFAF {2nd red⬆️}.
🟡 In #Kursk region, fighting continues north and east of the AFU controlled #Oleshnya. In #Guyevo the AFU offers fierce resistance. #Gornal remains AFU controlled.
🔴In #KrasnayaYaruga Sector, the battle for #Popovka {5th black↙️} and #Demidovka continued.
🗺 All on Map 1
🔴#Kharkov Direction:
🔴In #Liptsy and #Volchansk Sections, a lull.
🔴#Svatovo Front:
🔴 In #Kupyansk, #Borovaya Sector, no major changes.
🔴In #Liman Sector, fighting at #Katerinovka and #Novoye continues.
🔴In #Seversk Sector, Russian troops continued to attack in the area of #Belogorovka (#LPR).
🟡 In #Verkhnekamenskoye, a Russian assault group has entered the village, the battle for which has begun.
🗺 Map 2
🔴#ChasovYar Direction:
🔴In #ChasovYar and #Toretsk Sectors, the battle for the cities and nearby villages continued without major changes.
🔴#Pokrovsk Direction:
🔴 On the right Flank, far to the east, fighting continued at #Valentinovka, west of #Panteleymonovka (southwards in the area of #Aleksandropol, and further west for #Tarasovka.
🔴 South of the City, fierce counterbattles. In #Lysovka, the RFAF reportedly advanced northwards; the AFU reentered #Dachenskoye and #Zelenoye; fighting for the southeastern outskirts of #Kotlino continued.
🔴 On the left Flank, fierce counterbattles in the areas of #Udachnoye and #Novoaleksandrovka.
🟡#Preobrazhenka has been taken by the RFAF.
🟡 At#Bogdanovka, the battle continued. It is disputed that the fighting is already inside the village.
🔴#Komar Direction:
🔴In #Bogatyr Sector, fighting continues. #Konstantinopol is still embattled, as well as #Razliv is.
🔴 In #Komar Sector, Russian forces are fighting along the western bank of the 'Mokriye Yaly River' and have advanced to #Vesyoloye, which came reportedly under Russian control. On the approaches to #Shevchenko and in #VolnoyePole, the battle continued.
🔴#Zaporozhye Direction:
🔴In the #Orekhov Section, south of the city there is mainly positional fighting and Russian fire on AFU positions. To the west, the situation in the 4 contested villages is reportedly as follows:
🟡#Shcherbaki contested;
🟡#MalyeShcherbakito the west, still contested;
🟡#Stepovoye, further west as well;
🟡 In #Lobkovoye; the RFAF advanced into its northern part and took prisoners. Reportedly, there are only Russian paratroopers in the village for now.
🎬 Video
🗺 Map 3
🟡 Near #Kamenskoye, in the far west, the fighting continued, reportedly Russian stormtroopers are approaching the village.
💥 In the #DPR, the AFU dropped an IED on a passenger car in #Gorlovka, wounding 3 civilians.
💥 In #Kherson Direction, mutual strikes, and the AFU shelled several villages, resulting in several wounded and infrastructure damage.
💥#OldRussia:
🔵In #Kursk Region, the AFU attacked a power substation and a power facility, violating the 'energy ceasefire.' In #Belgorod region, Ukrainian UAVs targeted villages and farmsteads as well as vehicles, wounding several civilians.
💥#RestUkraine:
🔵 The RFAF struck a targets in #Kharkov, at least 14 Geranium UAV hits within 40 minutes were reported, #Slavyansk, #Dnepropetrovsk and #Zaporozhye. In #KrivoyRog, a company has been hit, according to Ukrainian channels by an Iskander ballistic missile, killing 4 people and wounding 14.
⚠️ The Term 'Reportedly' indicates that it is unconfirmed!
🎞 Video Source
🗺 Maps @olegtsarov; @petrenko_iHS; @creamy_caprice
📋 Sources: CC; Tsarov;
🇺🇦Fiend;⚡️2M;🐈Cat😼VK
🕰As of 3 Apr 2025; 06:35 GMT+3;📃2 Apr
📱 Join GLOBAL DEPTH to boost your TG Feed
💬Join Military Chat for Comments & Discussions
🇺🇦On Ukraine Observer you will find your daily independent Ukraine War Battle Update
⚡️
🇷🇺
🇺🇦⚔️ Ukraine Fronts on the Morning of 5 April⚡️
🔴#Sumy Direction:
🔴In #Sudzha Sector, to the west on Ukrainian soil, the battles for #Veselovka and #Zuravka continue.
🟡#Basovka has reportedly been captured by Russian forces {3rd black⬆️}.
🟡 In #Kursk region, the AFU still controls #Oleshnya. South of #Guyevo, there is reportedly fighting along the road to 'St. Nicholas Monastery' which is part of AFU controlled #Gornal.
🔴In #KrasnayaYaruga Sector, the villages of #Popovka and #Demidovka remain contested. Fighting continues.
🗺 All on Map 1
🔴#Kharkov Direction:
🔴In #Liptsy and #Volchansk Sections, positional battles, no change.
🔴#Svatovo Front:
🔴 In #Kupyansk Sector, intense fighting in the area of Oskol bridgeheads north of the city:
#Kamenka has been entered by Russians troops.
🗺 Map 2
🟡 For #Figolevka, to the south, reportedly the battle has begun again. About 2 weeks ago the AFU recaptured the settlement.
🟡 In #Kondrashovka's northeastern part, fighting continues, as well to its northwest in nearby #MalayaShapkovka's southeastern part (unconfirmed).
🔴 In #Borovaya Sector, without changes.
🔴In #Liman Sector, battles are taking place west of #BalkaZhuravka. The RFAF took #Novolyubovka. To the west, fighting towards #Novoye and #Katerinovka continues.
🔴For #Seversk Sector, no news.
🔴#ChasovYar Direction:
🔴In #ChasovYar and #Toretsk Sectors, without major changes.
🔴#Pokrovsk Direction:
🔴 On the right Flank, the battle for #Tarasovka is ongoing. Otherwise no major changes.
🔴 South of the City, the situation is reportedly as follows:
🟡 Near #SukhoyYar (AFU controlled), there are positional battles.
🟡#Lysovka is mostly under Russian control, with exception of its northwestern part.
🟡 At #Zelenoye' northeastern outskirts, there are counter-fights.
🟡 At #Novoukrainka, Russian forces press towards the settlement.
🟡#Shevchenko is RFAF controlled.
🟡 Northeast of #Peschanoye and in #Zverevo, Russian assault units are attacking.
🟡 In #Kotlino's northwestern part, counterattacks take place. The AFU try unsuccessfully to enter the settlement's industrial zone (which should be east of the mostly AFU controlled village).
🔴 On the left Flank, reportedly fierce counterbattles in the area of #Udachnoye. RFAF assault units are restoring the situation in the village's northern part and have made significant progress in the residential area towards the central part.
🟡#Uspenovka, according to RF MoD claims, shall been taken.
🔴#Komar Direction:
🔴In #Bogatyr Sector, fighting at #Andreyevka and for #Konstantinopol continued. Near #Bogatyr, the RFAF reportedly extended their control zone.
🔴 In #Komar Sector, no major changes.
🔴#Zaporozhye Direction:
🔴In the #Orekhov Section, the RFAF advanced along the forest belts south of #Kamenskoye to a depth of up to 500 m. Otherwise no major changes.
💥 In the #DPR, the AFU struck #Gorlovka, killing a woman and wounding 5 more civilians.
💥 In #Kherson Direction, the AFU struck several villages, wounding civilians.
💥#OldRussia:
🔵 In #Bryansk Region, the AFU damaged a PS in the village of #Lemeshovka, violating the agreement. Also several villages and an agricultural enterprise have been attacked.
🟡 In#Samara region, UAVs hit the 'JSC Promsintez Plant' in #Chapayevsk, which produces explosives.
🟡 In the Republic of #Mordovia, UAVs have hit the 'JSC Optic Fiber Systems Plant' in #Saransk, crucial for the RF defence industry.
📸 Picture
💥#RestUkraine:
🔵 The RFAF struck targets in #Kiev, #Zhitomir, #Sumy, #Vinnitsa and #Cherkassy regions at night.
🟡 In #KrivoyRog, there was a massive UAV attack. Claims on an alleged missile strike are contradictory, the published footage does not allow the incident to be assessed.
🎬 Video
⚠️ The Term 'Reportedly' indicates that it is unconfirmed!
🗺 Maps @olegtsarov; @petrenko_iHS
📋 Sources: CC; Tsarov; 🇺🇦Fiend;⚡️2M;🐈Cat😼VK
🕰As of 5 Apr 2025; 06:36 GMT+3;📃4 Apr
📱 Join GLOBAL DEPTH to boost your TG Feed
💬Join Military Chat for Comments & Discussions
🇺🇦On Ukraine Observer you will find your daily independent Ukraine War Battle Update