Python Glossary English

все 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Сообщить о неточности