MirOS Manual: betoh16(3), betoh32(3), betoh64(3), byteorder(3), htobe16(3), htobe32(3), htobe64(3), htole16(3), htole32(3), htole64(3), htonl(3), htons(3), letoh16(3), letoh32(3), letoh64(3), ntohl(3), ntohs(3), swap16(3), swap32(3), swap64(3)

BYTEORDER(3)               BSD Programmer's Manual                BYTEORDER(3)

NAME

     htonl, htons, ntohl, ntohs, htobe64, htobe32, htobe16, betoh64, betoh32,
     betoh16, htole64, htole32, htole16, letoh64, letoh32, letoh16, swap64,
     swap32, swap16 - convert values between different byte orderings

SYNOPSIS

     #include <sys/types.h>

     u_int32_t
     htonl(u_int32_t host32);

     u_int16_t
     htons(u_int16_t host16);

     u_int32_t
     ntohl(u_int32_t net32);

     u_int16_t
     ntohs(u_int16_t net16);

     u_int64_t
     htobe64(u_int64_t host64);

     u_int32_t
     htobe32(u_int32_t host32);

     u_int16_t
     htobe16(u_int16_t host16);

     u_int64_t
     betoh64(u_int64_t big64);

     u_int32_t
     betoh32(u_int32_t big32);

     u_int16_t
     betoh16(u_int16_t big16);

     u_int64_t
     htole64(u_int64_t host64);

     u_int32_t
     htole32(u_int32_t host32);

     u_int16_t
     htole16(u_int16_t host16);

     u_int64_t
     letoh64(u_int64_t little64);

     u_int32_t
     letoh32(u_int32_t little32);

     u_int16_t
     letoh16(u_int16_t little16);

     u_int64_t
     swap64(u_int32_t val64);

     u_int32_t
     swap32(u_int32_t val32);

     u_int16_t
     swap16(u_int16_t val16);

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

     gethostbyname(3), getservent(3)

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

Generated on 2014-04-02 20:57:59 by $MirOS: src/scripts/roff2htm,v 1.79 2014/02/10 00:36:11 tg Exp $

These manual pages and other documentation are copyrighted by their respective writers; their source is available at our CVSweb, AnonCVS, and other mirrors. The rest is Copyright © 2002‒2014 The MirOS Project, Germany.
This product includes material provided by Thorsten Glaser.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report – diffs preferred.