Byte Order Macros

Byte Order Macros — a portable way to convert between different byte orders.

Synopsis


#include <glib.h>


#define     G_BYTE_ORDER
#define     G_LITTLE_ENDIAN
#define     G_BIG_ENDIAN
#define     G_PDP_ENDIAN

#define     g_htonl                         (val)
#define     g_htons                         (val)
#define     g_ntohl                         (val)
#define     g_ntohs                         (val)

#define     GINT_FROM_BE                    (val)
#define     GINT_FROM_LE                    (val)
#define     GINT_TO_BE                      (val)
#define     GINT_TO_LE                      (val)

#define     GUINT_FROM_BE                   (val)
#define     GUINT_FROM_LE                   (val)
#define     GUINT_TO_BE                     (val)
#define     GUINT_TO_LE                     (val)

#define     GLONG_FROM_BE                   (val)
#define     GLONG_FROM_LE                   (val)
#define     GLONG_TO_BE                     (val)
#define     GLONG_TO_LE                     (val)

#define     GULONG_FROM_BE                  (val)
#define     GULONG_FROM_LE                  (val)
#define     GULONG_TO_BE                    (val)
#define     GULONG_TO_LE                    (val)

#define     GINT16_FROM_BE                  (val)
#define     GINT16_FROM_LE                  (val)
#define     GINT16_TO_BE                    (val)
#define     GINT16_TO_LE                    (val)

#define     GUINT16_FROM_BE                 (val)
#define     GUINT16_FROM_LE                 (val)
#define     GUINT16_TO_BE                   (val)
#define     GUINT16_TO_LE                   (val)

#define     GINT32_FROM_BE                  (val)
#define     GINT32_FROM_LE                  (val)
#define     GINT32_TO_BE                    (val)
#define     GINT32_TO_LE                    (val)

#define     GUINT32_FROM_BE                 (val)
#define     GUINT32_FROM_LE                 (val)
#define     GUINT32_TO_BE                   (val)
#define     GUINT32_TO_LE                   (val)

#define     GINT64_FROM_BE                  (val)
#define     GINT64_FROM_LE                  (val)
#define     GINT64_TO_BE                    (val)
#define     GINT64_TO_LE                    (val)

#define     GUINT64_FROM_BE                 (val)
#define     GUINT64_FROM_LE                 (val)
#define     GUINT64_TO_BE                   (val)
#define     GUINT64_TO_LE                   (val)

#define     GUINT16_SWAP_BE_PDP             (val)
#define     GUINT16_SWAP_LE_BE              (val)
#define     GUINT16_SWAP_LE_PDP             (val)

#define     GUINT32_SWAP_BE_PDP             (val)
#define     GUINT32_SWAP_LE_BE              (val)
#define     GUINT32_SWAP_LE_PDP             (val)

#define     GUINT64_SWAP_LE_BE              (val)

Description

These macros provide a portable way to determine the host byte order and to convert values between different byte orders.

The byte order is the order in which bytes are stored to create larger data types such as the gint and glong values. The host byte order is the byte order used on the current machine.

Some processors store the most significant bytes (i.e. the bytes that hold the largest part of the value) first. These are known as big-endian processors.

Other processors (notably the x86 family) store the most significant byte last. These are known as little-endian processors.

Finally, to complicate matters, some other processors store the bytes in a rather curious order known as PDP-endian. For a 4-byte word, the 3rd most significant byte is stored first, then the 4th, then the 1st and finally the 2nd.

Obviously there is a problem when these different processors communicate with each other, for example over networks or by using binary file formats. This is where these macros come in. They are typically used to convert values into a byte order which has been agreed on for use when communicating between different processors. The Internet uses what is known as 'network byte order' as the standard byte order (which is in fact the big-endian byte order).

Details

G_BYTE_ORDER

#define G_BYTE_ORDER G_LITTLE_ENDIAN

The host byte order. This can be either G_LITTLE_ENDIAN or G_BIG_ENDIAN (support for G_PDP_ENDIAN may be added in future.)


G_LITTLE_ENDIAN

#define G_LITTLE_ENDIAN 1234

Specifies one of the possible types of byte order. See G_BYTE_ORDER.


G_BIG_ENDIAN

#define G_BIG_ENDIAN    4321

Specifies one of the possible types of byte order. See G_BYTE_ORDER.


G_PDP_ENDIAN

#define G_PDP_ENDIAN    3412		/* unused, need specific PDP check */	

Specifies one of the possible types of byte order (currently unused). See G_BYTE_ORDER.


g_htonl()

#define     g_htonl(val)

Converts a 32-bit integer value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 32-bit integer value in host byte order. nteger value from host to network byte order.

val :a 3