Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » преобразовать к последовательности байт [RSS Feed]

#1 Ноя. 24, 2008 11:48:18

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

преобразовать к последовательности байт

для передачи данных по TCP, мне надо составить пакет данных:

уникальный идентификатор + длина сообщения + текстовое сообщение.

уникальный идентификатор должен занимать 4 байта
длина сообщения - это int число, под которое выделено 4 байта
текст - это просто строка

т.е. если есть int число, то его можно конвертнуть, например с помощью hex(), тогда число будет записываться как-то так: 0x9f1
хотелось бы из этой записи выбрать “9f1”, и дополнить недостающий байт нулём.

отправлять результат буду, видимо, через socket.send()
(он, кажется, только строки отправляет?)

какие модули стоит посмотреть? может быть, ссылки посоветуете по теме?



Отредактировано (Ноя. 24, 2008 12:49:20)

Офлайн

#2 Ноя. 24, 2008 11:51:50

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

преобразовать к последовательности байт

модуль struct?



Офлайн

#3 Ноя. 24, 2008 13:12:15

ice
От:
Зарегистрирован: 2008-01-12
Сообщения: 156
Репутация: +  0  -
Профиль   Отправить e-mail  

преобразовать к последовательности байт

axe
т.е. если есть int число, то его можно конвертнуть, например с помощью hex(), тогда число будет записываться как-то так: 0x9f1
хотелось бы из этой записи выбрать “9f1”, и дополнить недостающий байт нулём.
>>> ‘%04x’ % 0x9f1
'09f1'
>>> ‘%08x’ % 2545
'000009f1'
?



Отредактировано (Ноя. 24, 2008 13:14:15)

Офлайн

#4 Ноя. 24, 2008 13:31:55

ice
От:
Зарегистрирован: 2008-01-12
Сообщения: 156
Репутация: +  0  -
Профиль   Отправить e-mail  

преобразовать к последовательности байт

axe
(он, кажется, только строки отправляет?)
нет. Он отправляет поток байт.



Офлайн

#5 Ноя. 24, 2008 17:41:54

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

преобразовать к последовательности байт

struct.
ice, нечего человеку голову морочить.



Офлайн

#6 Ноя. 25, 2008 07:56:14

ice
От:
Зарегистрирован: 2008-01-12
Сообщения: 156
Репутация: +  0  -
Профиль   Отправить e-mail  

преобразовать к последовательности байт

да я и не пытаюсь морочить. надо строку отправить, так не проще ли строку и отправить. и проблемы Big/LittleEndian не будет. И отлаживать проще будет.



Офлайн

#7 Ноя. 25, 2008 08:58:34

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

преобразовать к последовательности байт

Да не вроде никаких проблем с big/littleEndian :)
наоборот, когда ты знаешь и уверен в том, что у тебя четкая структура, это есть хорошо :) да и по размеру.. В 4 байтах можно будет сохранить большее число, чем в строке в hex, размером в 4 байта



Офлайн

#8 Ноя. 25, 2008 19:27:37

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

преобразовать к последовательности байт

посмотрел, struct - действительно то, что нужно. спасибо.

использую как раз то, что в 4 байта можно упаковать большое число



Офлайн

  • Начало
  • » Network
  • » преобразовать к последовательности байт[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version