все Python 3socketфункция
socket.ntohs()
преобразование адресов и порядка байтов
Переводит 16-битное число из сетевого порядка байтов (big-endian) в порядок машины; обратна htons().
Синтаксис
socket.ntohs(x) -> int
Применяется к числу, а не к байтам: два байта порта из заголовка сначала превращают в int, и только потом переставляют. Короче сразу int.from_bytes(data, 'big') или struct.unpack('!H', data). С 3.10 значение больше 65535 поднимает OverflowError — до этого старшие биты отбрасывались лишь с DeprecationWarning, и ошибка пряталась; отрицательное с 3.14 даёт ValueError.
Примеры
import socket, sys
data = (8080).to_bytes(2, 'big') # порт в заголовке пакета
print(socket.ntohs(int.from_bytes(data, sys.byteorder))) # → 8080
print(int.from_bytes(data, 'big')) # → 8080
# Python 3.10+
import socket
socket.ntohs(70000) # → OverflowError
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности