Python Glossary English

все Python 3socketфункция

socket.htonl()

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

Переводит 32-битное число из порядка байтов машины в сетевой (big-endian); результат — снова int.

Синтаксис

socket.htonl(x) -> int

На big-endian машине функция ничего не делает, на little-endian (почти все ПК и телефоны) переставляет 4 байта — поэтому htonl(1) печатает 16777216 и пугает. Это наследие C API; в Python поле протокола обычно упаковывают сразу в байты: struct.pack('!I', n) или n.to_bytes(4, 'big'). Отрицательные числа и значения больше 2**32-1 не принимаются.

Примеры

import socket, struct
print(socket.htonl(1))  # → ? 16777216 на little-endian
print(struct.pack('!I', 1))  # → b'\x00\x00\x00\x01'
print((1).to_bytes(4, 'big'))  # → b'\x00\x00\x00\x01'

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности