DESCRIPTION

These routines convert 16, 32 and 64-bit quantities between different
byte orderings. The "swap" functions reverse the byte ordering of the
given quantity; the others convert either from/to the native byte order
used by the host to/from either little- or big-endian (a.k.a network)
order.
Apart from the swap functions, the names can be described by this form:
{src-order}to{dst-order}{size}. Both {src-order} and {dst-order} can take
the following forms:
h Host order.
n Network order (big-endian).
be Big-endian (most significant byte first).
le Little-endian (least significant byte first).
One of the specified orderings must be 'h'. {size} will take these forms:
l Long (32-bit, used in conjunction with forms involving 'n').
s Short (16-bit, used in conjunction with forms involving 'n').
16 16-bit.
32 32-bit.
64 64-bit.
The swap functions are of the form: swap{size}.
Names involving 'n' convert quantities between network byte order and
host byte order. The last letter ('s' or 'l') is a mnemonic for the trad-
itional names for such quantities, short and long, respectively. Today,
the C concept of short and long integers need not coincide with this
traditional misunderstanding. On machines which have a byte order which
is the same as the network order, routines are defined as null macros.
The functions involving either "be", "le", or "swap" use the numbers 16,
32, or 64 for specifying the bitwidth of the quantities they operate on.
Currently all supported architectures are either big- or little-endian so
either the "be" or "le" variants are implemented as null macros.
The routines mentioned above which have either {src-order} or {dst-order}
set to 'n' are most often used in conjunction with Internet addresses and
ports as returned by gethostbyname(3) and getservent(3).

SEE ALSO

STANDARDS

The htonl(), htons(), ntohl(), and ntohs() functions conform to IEEE Std
1003.1 ("POSIX"). The other functions are extensions that should not be
used when portability is required.

HISTORY

The byteorder functions appeared in 4.2BSD.

BUGS

On the vax, alpha, i386, and some mips architectures, bytes are handled
backwards from most everyone else in the world. This is not expected to
be fixed in the near future.
MirOS BSD #10-current June 4, 1993 1