Запись двоичных данных к сокету (или файл) с Python

Вы можете попробовать установить в столбце ALTER значение по умолчанию.

ALTER TABLE `T` MODIFY `type` varchar(50) DEFAULT 'default';

затем вставьте по ключевому слову DEFAULT:

INSERT INTO  T (type) VALUES (DEFAULT);

Результаты :

9
задан Pesto 26 March 2009 в 15:37
поделиться

3 ответа

Используйте модуль структуры, чтобы создать буфер и записать это.

11
ответ дан 4 December 2019 в 13:49
поделиться

Очень изящный способ обработать переходы тезисов между объектами Python и двоичным представлением (оба направления) пользуется библиотекой Construct.

В их документации Вы найдете много хороших примеров использования его. Я использовал его сам в течение нескольких лет теперь для протоколов последовательной передачи данных и декодировал двоичные данные.

4
ответ дан 4 December 2019 в 13:49
поделиться

На самом низком уровне сокет ввод-вывод состоит из чтения или записи, что строка байта оценивает сокету. Чтобы сделать это, я кодирую информацию, которая будет записана как строка символов, содержащих значения байта, и запишет это в сокет. Я делаю это путем создания суперстроки и затем добавления одного символа за один раз. например, для создания запроса чтения Modbus/Ethernet:

    readRequest = """"""
    readRequest += chr(self.transactionID / 0x100)  # Transaction ID MSB         (0)
    readRequest += chr(self.transactionID % 0x100)  # Transaction ID LSB         (1)
    readRequest += chr(0)                           # Protocol ID MSB (Always 0) (2)
    readRequest += chr(0)                           # Protocol ID LSB (Always 0) (3)
    readRequest += chr(0)                           # Length MSB (Always 0)      (4)
    readRequest += chr(6)                           # Length LSB (Always 6)      (5)
    readRequest += chr(0)                           # Unit ID (Always 0)         (6)

    readRequest += chr(0x04)                        # Function code 4     (0)
    readRequest += chr(startOffset / 0x100)         # Starting offset MSB (1)
    readRequest += chr(startOffset % 0x100)         # Starting offset LSB (2)
    readRequest += chr(0)                           # Word count MSB      (3)
    readRequest += chr(2 * nToRead)                 # Word count LSB      (4)

    sockOutfile.write(readRequest)

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

Конечно, этот метод почти так же прост как молоток. Это должно будет быть зафиксировано, когда кодировка символов по умолчанию в строке будет Unicode вместо ASCII.

0
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: