0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 5

Правильно сформировать заголовок файла

06.10.2016, 13:57. Показов 5187. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Уже второй день никак не могу решить одну задачу, понимаю, что всё просто и понимаю, что код мой корявый, но из открытых пары десятков вкладок решения так и не нашел, поэтому прошу помощи… Суть в том, что мне нужно принимать энное количество байт от сервера и записывать в файл определенного формата.
Я создаю соккет, подключаюсь к серверу, принимаю данные в список, потом конвертирую список в строку. Далее формирую строку хедера для файла, после чего приклеиваю строку хедера к строке данных и записываю всё это в файл и наблюдаю такую картину: хедер находится в начале файла, но не в виде байтов, а как текст… То есть хедер выглядит так: 0xbad4feed0x125e773c1120x7d170x400 и он просто текстом написан в начале бинарника… Скрипт сейчас выглядит так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.1.58', 32023))
y = 0
buffr = 0
data = []
while y  < 65536:
    buffr = sock.recv(1024)
    x = sys.getsizeof(buffr)
    y = x + y
    data.append(buffr)
current_milli_time = lambda: int(round(time.time() * 1000))
pre_head = ''.join(hex(0xBAD4FEED) + hex(current_milli_time()) + hex(32023) + hex(1024))
pre_data = ''.join(data)
head = pre_head.replace('L','')
head = head.encode("utf-8")
flush = head + pre_data
my_file = open("tcp.slf", 'ab')
my_file.write(flush)
my_file.close()
sock.close()
Буду благодарен за науку )
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2016, 13:57
Ответы с готовыми решениями:

Не правильно определяется заголовок графического файла
Побегав по форумам, я нашел как определяют тип файлов, исходя из содержания самого файла. Например файл «JPEG» сделанный редактором...

Сформировать заголовок, отправить его, а затем принять ответный заголовок
День добрый, форумчане. Предо мной задача - сформировать заголовок, отправить его, а затем принять ответный заголовок. Первая часть...

Не могу сформировать заголовок. (см. в теме)
Привет всем. Не могу сформировать заголовок за недостатком знаний. Хотел бы узнать что этим действием можно сделать? class Request { ...

6
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
06.10.2016, 15:26
Видимо, писать туда надо bytes, а не string.
0
0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 15:39  [ТС]
я пробовал
Python
1
pre_head = b''.join(hex(0xBAD4FEED) + hex(current_milli_time()) + hex(32023) + hex(1024))
но в итоге всеравно тип данных на выходе--string
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
06.10.2016, 15:43
Фиксированная последовательность байт:
Python
1
b'\xba\xd4\xfe\xed'
Целое в байты (гуглится на раз):
Python
1
(1000).to_bytes(2, byteorder='big')
Скобки с переменной не нужны. И лямбда вам тоже, вроде, не нужна.
0
0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 16:12  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Целое в байты (гуглится на раз):
Python
1
port = (32023).to_bytes(2, byteorder='big')
>>>AttributeError: 'int' object has no attribute 'to_bytes'

Замучался уже с этими преобразованиями... Почему нельзя любую строку сразу в байты писать? Извините за "нубскость" Пайтон всего третий день в голове пытается улечься.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
06.10.2016, 16:21
Какая у вас версия Питона? Вроде, to_bytes только в 3.2 появилось.

Добавлено через 2 минуты
Цитата Сообщение от darwol Посмотреть сообщение
Почему нельзя любую строку сразу в байты писать?
Почему же нельзя, можно. Только вам и строки не нужны. Если вы сначала конвертите данные в строку - то резонно, потом встанет обратная задача. А всего этого можно избежать.
Про b'\x...' - тоже к 3-му относилось.
0
0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 17:10  [ТС]
Проверил, да, версия 2.7 --вы правы, сейчас буду обновлять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2016, 17:10
Помогаю со студенческими работами здесь

Правильно убрать заголовок из ActionBar ?!
Знаю этот вопрос задавался уже миллион раз, но обыскав весь интернет ответа на него я так и не получил... Как убрать заголовок из...

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

Не правильно показывает заголовок в категорих
Всем привет. Сайт http://груззапчасть.рф/catalog/maz/ именно в категориях товара неправильно показывает заголовок страницы. Показывает...

Как правильно оформлять заголовок main
Добрый день всем. Читая книги, копаюсь в чужих кодах нахожу разное оформление функции main. Например в Керниган и Ритчи по Си, автор иногда...

Как правильно Отправить http заголовок в php curl?
Здравствуйте, помогите пожалуйста переделать запрос из curl в php curl Если ввести этот запрос просто в терминале сервера то придет...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru