Найти - Пользователи
Полная версия: преобразовать к последовательности байт
Начало » Network » преобразовать к последовательности байт
1
axe
для передачи данных по TCP, мне надо составить пакет данных:

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

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

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

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

какие модули стоит посмотреть? может быть, ссылки посоветуете по теме?
igor.kaist
модуль struct?
ice
axe
т.е. если есть int число, то его можно конвертнуть, например с помощью hex(), тогда число будет записываться как-то так: 0x9f1
хотелось бы из этой записи выбрать “9f1”, и дополнить недостающий байт нулём.
>>> ‘%04x’ % 0x9f1
'09f1'
>>> ‘%08x’ % 2545
'000009f1'
?
ice
axe
(он, кажется, только строки отправляет?)
нет. Он отправляет поток байт.
Андрей Светлов
struct.
ice, нечего человеку голову морочить.
ice
да я и не пытаюсь морочить. надо строку отправить, так не проще ли строку и отправить. и проблемы Big/LittleEndian не будет. И отлаживать проще будет.
igor.kaist
Да не вроде никаких проблем с big/littleEndian :)
наоборот, когда ты знаешь и уверен в том, что у тебя четкая структура, это есть хорошо :) да и по размеру.. В 4 байтах можно будет сохранить большее число, чем в строке в hex, размером в 4 байта
axe
посмотрел, struct - действительно то, что нужно. спасибо.

использую как раз то, что в 4 байта можно упаковать большое число
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB