axe
Ноя. 24, 2008 11:48:18
для передачи данных по TCP, мне надо составить пакет данных:
уникальный идентификатор + длина сообщения + текстовое сообщение.
уникальный идентификатор должен занимать 4 байта
длина сообщения - это int число, под которое выделено 4 байта
текст - это просто строка
т.е. если есть int число, то его можно конвертнуть, например с помощью hex(), тогда число будет записываться как-то так: 0x9f1
хотелось бы из этой записи выбрать “9f1”, и дополнить недостающий байт нулём.
отправлять результат буду, видимо, через socket.send()
(он, кажется, только строки отправляет?)
какие модули стоит посмотреть? может быть, ссылки посоветуете по теме?
igor.kaist
Ноя. 24, 2008 11:51:50
модуль struct?
ice
Ноя. 24, 2008 13:12:15
axe
т.е. если есть int число, то его можно конвертнуть, например с помощью hex(), тогда число будет записываться как-то так: 0x9f1
хотелось бы из этой записи выбрать “9f1”, и дополнить недостающий байт нулём.
>>> ‘%04x’ % 0x9f1
'09f1'
>>> ‘%08x’ % 2545
'000009f1'
?
ice
Ноя. 24, 2008 13:31:55
axe
(он, кажется, только строки отправляет?)
нет. Он отправляет поток байт.
Андрей Светлов
Ноя. 24, 2008 17:41:54
struct.
ice, нечего человеку голову морочить.
ice
Ноя. 25, 2008 07:56:14
да я и не пытаюсь морочить. надо строку отправить, так не проще ли строку и отправить. и проблемы Big/LittleEndian не будет. И отлаживать проще будет.
igor.kaist
Ноя. 25, 2008 08:58:34
Да не вроде никаких проблем с big/littleEndian :)
наоборот, когда ты знаешь и уверен в том, что у тебя четкая структура, это есть хорошо :) да и по размеру.. В 4 байтах можно будет сохранить большее число, чем в строке в hex, размером в 4 байта
axe
Ноя. 25, 2008 19:27:37
посмотрел, struct - действительно то, что нужно. спасибо.
использую как раз то, что в 4 байта можно упаковать большое число