Можно ли в 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
Рабочей субботе посвящается...
Инь Жэнь ходит на работу, чтобы поесть. А у вас как обстоят дела с рабочей мотивацией?
❝ — У меня нет планов менять работу, — продолжил Инь Жэнь.
Ему не нужны были ни деньги, ни статус, ни женщины. Ему нужна была столовая Шиана!
Нянь Чжун. Зло похоже на людей. Глава 33. Легенда о воскрешении
#China#novel#NianZhong#EvilAsHumans
Что такое эпичное начало отношений
Великое Зло сбежало из дурдома. На тёмной улице напоролось на странного парня, которого по чистой случайности хотела сожрать какая-то хтонь. Странный парень Зло приметил, но хтонь заигнорил настолько, что та обиделась и решила с досады сожрать Зло, но не рассчитала массовую категорию противника и оказалась сожранной в ответ. Всё в рамках принципа: "Попался, который кусался!".
И это был пролог, чтоб вы понимали.
#China#novel#NianZhong#EvilAsHumans
Несу две прекрасные новости поклонникам китайских новелл
🔅 Сегодня был закончен перевод основного текста новеллы Нянь Чжун "Зло похоже на людей" от прекрасной ulik3221. Текст доступен на фикбуке (необходим VPN). В обозримом будущем планирую за него взяться — ждите апдейты!
🔅 С разрешения команды переводчиков SHENYUAN сообщаю, что удаленный ранее с wattpad перевод новеллы "Лю Яо" Прист был перезалит на новый аккаунт. Позднее будет восстановлен и перевод "Лехо" после некоторой корректировки текста. Следите за новостями, сейчас идут зачистки платформ, поэтому нужно держать нос по ветру.
Атрибутировать арт не смогла, но взяла с сайта англоязычных переводчиков "Зла" Kinky Translations. Показался весьма атмосферным, но насколько он попадает в историю — узнаем в скором времени.
#China#novel#NianZhong#EvilAsHumans
Продолжаю читать "Зло похоже на людей" Нянь Чжун
На сцене знакомства Древнего Зла с родителями напарника я зависла, пытаясь понять, что же она мне напоминает. А разгадка была буквально под носом — просто посмотрите на то, как сокрушается мать Янь Се, оглядываясь на жизненный путь непутёвого сына (достаточно вспомнить, сколько свиданий вслепую он опрокинул). Этим двум почтенным дамам было бы о чём поговорить! (кстати, тот момент, что Чжун Чэншо оказался приёмным ребёнком, которого приютили люди, поймавшие его родители-серийников, меня очень впечатлил):
❝ — Когда нашему сыну исполнилось восемнадцать, я думала, что ему будет достаточно принцессы. Когда ему исполнилось двадцать пять, я думала, что он сможет найти себе девушку из хорошей семьи. К тридцати годам моя жалкая просьба была сведена к минимуму: женщина должна быть живой и хотя бы моложе меня!
Хуай Шан. Разрывая облака. Глава 45. Дело 619. Окровавленная одежда жертвы похищения
❝ — Что "мама"? Мы с отцом уже скоро отправимся на тот свет. Можно нам о тебе побеспокоиться? — сердито фыркнула женщина, после чего повернулась к Инь Жэню, — Сяо Инь, не принимай мои слова близко к сердцу. Тётушка просто шутит. В конце концов, мы же просто беспокоимся за нашего ребёнка. И вообще, у нас всего три требования к его спутнику или спутнице жизни: чтобы он был живой, достиг брачного возраста и был моложе нас.
Мда... На самом деле, Призрачный Король подпадал только под одно требование: достиг брачного возраста. Но им это знать необязательно.
Нянь Чжун. Зло похоже на людей. Арка 2. Игрок. Глава 24. Его родители
#China#novel#HuaiShang#PoYun#NianZhong#EvilAsHumans
Раз я с лёгкой руки Цзян Цзыбэй вернулась к чтению новелл, этим стоит воспользоваться, чтобы добить одну давно начатую прекрасную историю и начать другую, с которой я с большой вероятностью сойдусь "характерами". Планы такие:
🤩 "Зло похоже на людей" Нянь Чжун
🤩"Земля Онлайн" Мо Чэньхуань
#China#novel#MoChenHuan#EarthIsOnline#Кислород#NianZhong#EvilAsHumans
Несу вам еще одну добрую весть, ибо не могу дотерпеть до утра
Завершен перевод основного текста новеллы "Законы другого мира" Цзяотан Дунгуа(2016, 108ch+15ex)
Метки: Вымышленные существа, ксенофилия, насилие, параллельные миры, приключения, романтика, слоуберн, фантастика, экшн
Описание: Неудачная спасательная операция забрала жизни всех членов команды Чжоу Юя, а сам он после неё вынужден был отправиться в параллельный мир Нибелунги. Здесь действуют три закона: не показывайте своего страха, не ведитесь на красоту и не обманывайтесь мимикрией организмов S-уровня. Они понимают, как вы мыслите, и знают, как прельстить вас. Помните, что они не способны испытывать человеческие эмоции и любовь. Для них все люди одинаковы.
Что же, счастливого пребывания на Нибелунги.
Выражаю бесконечную признательность переводчице (ulik3221) за такую быструю и самоотверженную работу. Если вы читали в русском переводе новеллы "Глобальный вступительный экзамен" и "Первоклассный адвокат" Му Сули, то не мне вам рассказывать, какой прекрасный слог у этих текстов. Желаю ей сил и вдохновения и с нетерпением жду полного перевода мистической хоррор-новеллы "Зло похоже на людей" Нянь Чжун
Еще раз покажу вам шикарные обложки трехтомного тайского издания новеллы от Rose Publishing
#China#novel#JiaoTangDongGua#LawsOfTheOtherWorld#NianZhong#EvilAsHumans#список#ThaiCover
Апдейта по прочитанному снова не будет (посыпаю голову пеплом), но вместо этого оставлю здесь сумбурную заметку о горизонтальных и вертикальных ассоциациях вокруг прочитанных новелл
⭐️ Когда я читала "Седьмого Господина" Прист, я поймала себя на мысли, что уровень трагизма с первой же главы слегка зашкаливал (ничего не имею против) — история перерождений Цзин Бэйюаня оставляла привкус горечи и безысходности, а финальный аккорд в виде жертвы, которая в последнее перерождение вернула тому чёрные волосы, был таким непередаваемо щемящим, что меня не могло не сразить наповал... Апдейт: это был не предел. В "Старшем брате"Прист понадобились две главы, но переход в реалистичный сеттинг сделал своё дело — на месте, где должны были быть чувства, осталось полное опустошение.
⭐️ Когда я узнала о прошлом Фэй Ду из "Безмолвного чтения", я думала, что сложно себе представить более трагичное детство (когда к этому не было никаких внешних предпосылок). Но нет, первые 13 лет жизни Вэй Цяня из "Старшего брата" оказались тем ещё адом: он был зачат в результате изнасилования и стал для своей матери воплощением искалеченной судьбы. Мог ли он быть любим? Мог ли он в полной мере ненавидеть мать-наркоманку, когда так зависел от неё?
Отношение Вэй Цяня к ней было очень неоднозначным, но страх перед её безумием заставил мальчика задуматься о том, что единственный способ прекратить мучения — подсыпать ей яд в пищу и уйти вслед за ней.
❝ Гамлета мучил вопрос: "Быть или не быть?", но вопрос, который в детстве мучил Вэй Цяня, был куда серьёзней: "Убить мать или не убить?" (Глава 2)
⭐️ Так вышло, что сейчас я читаю в параллели три новеллы, в которых у главных героев скопился незавидный багаж сомнительных семейных связей.
К Вэй Цяню можно на минутку присоседить Чжун Чэншо ("Зло похоже на людей" Нянь Чжун) — сына серийных убийц, которого усыновили копы. Хотя с приёмными родителями ему повезло гораздо больше, чем Цзян Чэну ("Дерзай!" У Чжэ) — тот в 17 лет узнал, что был приёмным сыном, и был вытурен к биологическому отцу в богом забытую провинцию. А всё почему? А всё потому, что его буйный нрав мутил стоячие воды рафинированной приёмной семьи. В итоге парню пришлось мириться не только с чужим и чуждым окружением, но и с собственной ненужностью и порванными связями. И вдобавок родной папаша оказался игроком и пьянью, что заставило мальчишку содрогнуться от одной мысли о том, какой отпечаток оставят на нём такие кровные узы. Мрак да и только.
Выход? Строить новые связи и создавать свою собственную семью не по крови, но по духу. Хотя для начала достаточно просто выжить и не спиться.
Cr.: 顾旧云深 (weibo)
#China#novel#Priest#LordSeventh#DaGe#NianZhong#EvilAsHumans#WuZhe#SaYe