1*3b4b8bdaSRobert Mustacchi.\" 2*3b4b8bdaSRobert Mustacchi.\" This file and its contents are supplied under the terms of the 3*3b4b8bdaSRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 4*3b4b8bdaSRobert Mustacchi.\" You may only use this file in accordance with the terms of version 5*3b4b8bdaSRobert Mustacchi.\" 1.0 of the CDDL. 6*3b4b8bdaSRobert Mustacchi.\" 7*3b4b8bdaSRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 8*3b4b8bdaSRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 9*3b4b8bdaSRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 10*3b4b8bdaSRobert Mustacchi.\" 11*3b4b8bdaSRobert Mustacchi.\" 12*3b4b8bdaSRobert Mustacchi.\" Copyright 2016 Joyent, Inc. 13*3b4b8bdaSRobert Mustacchi.\" 14*3b4b8bdaSRobert Mustacchi.Dd January 30, 2016 15*3b4b8bdaSRobert Mustacchi.Dt ENDIAN 3C 16*3b4b8bdaSRobert Mustacchi.Os 17*3b4b8bdaSRobert Mustacchi.Sh NAME 18*3b4b8bdaSRobert Mustacchi.Nm endian , 19*3b4b8bdaSRobert Mustacchi.Nm be16toh , 20*3b4b8bdaSRobert Mustacchi.Nm be32toh , 21*3b4b8bdaSRobert Mustacchi.Nm be64toh , 22*3b4b8bdaSRobert Mustacchi.Nm betoh16 , 23*3b4b8bdaSRobert Mustacchi.Nm betoh32 , 24*3b4b8bdaSRobert Mustacchi.Nm betoh64 , 25*3b4b8bdaSRobert Mustacchi.Nm htobe16 , 26*3b4b8bdaSRobert Mustacchi.Nm htobe32 , 27*3b4b8bdaSRobert Mustacchi.Nm htobe64 , 28*3b4b8bdaSRobert Mustacchi.Nm htole16 , 29*3b4b8bdaSRobert Mustacchi.Nm htole32 , 30*3b4b8bdaSRobert Mustacchi.Nm htole64 , 31*3b4b8bdaSRobert Mustacchi.Nm le16toh , 32*3b4b8bdaSRobert Mustacchi.Nm le32toh , 33*3b4b8bdaSRobert Mustacchi.Nm le64toh , 34*3b4b8bdaSRobert Mustacchi.Nm letoh16 , 35*3b4b8bdaSRobert Mustacchi.Nm letoh32 , 36*3b4b8bdaSRobert Mustacchi.Nm letoh64 37*3b4b8bdaSRobert Mustacchi.Nd convert between big and little endian byte order 38*3b4b8bdaSRobert Mustacchi.Sh SYNOPSIS 39*3b4b8bdaSRobert Mustacchi.In endian.h 40*3b4b8bdaSRobert Mustacchi.Ft uint16_t 41*3b4b8bdaSRobert Mustacchi.Fo be16toh 42*3b4b8bdaSRobert Mustacchi.Fa "uint16_t be16" 43*3b4b8bdaSRobert Mustacchi.Fc 44*3b4b8bdaSRobert Mustacchi.Ft uint32_t 45*3b4b8bdaSRobert Mustacchi.Fo be32toh 46*3b4b8bdaSRobert Mustacchi.Fa "uint32_t be32" 47*3b4b8bdaSRobert Mustacchi.Fc 48*3b4b8bdaSRobert Mustacchi.Ft uint64_t 49*3b4b8bdaSRobert Mustacchi.Fo betoh64 50*3b4b8bdaSRobert Mustacchi.Fa "uint64_t be64" 51*3b4b8bdaSRobert Mustacchi.Fc 52*3b4b8bdaSRobert Mustacchi.Ft uint16_t 53*3b4b8bdaSRobert Mustacchi.Fo betoh16 54*3b4b8bdaSRobert Mustacchi.Fa "uint16_t be16" 55*3b4b8bdaSRobert Mustacchi.Fc 56*3b4b8bdaSRobert Mustacchi.Ft uint32_t 57*3b4b8bdaSRobert Mustacchi.Fo betoh32 58*3b4b8bdaSRobert Mustacchi.Fa "uint32_t be32" 59*3b4b8bdaSRobert Mustacchi.Fc 60*3b4b8bdaSRobert Mustacchi.Ft uint64_t 61*3b4b8bdaSRobert Mustacchi.Fo be64toh 62*3b4b8bdaSRobert Mustacchi.Fa "uint64_t be64" 63*3b4b8bdaSRobert Mustacchi.Fc 64*3b4b8bdaSRobert Mustacchi.Ft uint16_t 65*3b4b8bdaSRobert Mustacchi.Fo htobe16 66*3b4b8bdaSRobert Mustacchi.Fa "uint16_t host16" 67*3b4b8bdaSRobert Mustacchi.Fc 68*3b4b8bdaSRobert Mustacchi.Ft uint32_t 69*3b4b8bdaSRobert Mustacchi.Fo htobe32 70*3b4b8bdaSRobert Mustacchi.Fa "uint32_t host32" 71*3b4b8bdaSRobert Mustacchi.Fc 72*3b4b8bdaSRobert Mustacchi.Ft uint64_t 73*3b4b8bdaSRobert Mustacchi.Fo htobe64 74*3b4b8bdaSRobert Mustacchi.Fa "uint64_t host64" 75*3b4b8bdaSRobert Mustacchi.Fc 76*3b4b8bdaSRobert Mustacchi.Ft uint16_t 77*3b4b8bdaSRobert Mustacchi.Fo htole16 78*3b4b8bdaSRobert Mustacchi.Fa "uint16_t host16" 79*3b4b8bdaSRobert Mustacchi.Fc 80*3b4b8bdaSRobert Mustacchi.Ft uint32_t 81*3b4b8bdaSRobert Mustacchi.Fo htole32 82*3b4b8bdaSRobert Mustacchi.Fa "uint32_t host32" 83*3b4b8bdaSRobert Mustacchi.Fc 84*3b4b8bdaSRobert Mustacchi.Ft uint64_t 85*3b4b8bdaSRobert Mustacchi.Fo htole64 86*3b4b8bdaSRobert Mustacchi.Fa "uint64_t host64" 87*3b4b8bdaSRobert Mustacchi.Fc 88*3b4b8bdaSRobert Mustacchi.Ft uint16_t 89*3b4b8bdaSRobert Mustacchi.Fo le16toh 90*3b4b8bdaSRobert Mustacchi.Fa "uint16_t le16" 91*3b4b8bdaSRobert Mustacchi.Fc 92*3b4b8bdaSRobert Mustacchi.Ft uint32_t 93*3b4b8bdaSRobert Mustacchi.Fo le32toh 94*3b4b8bdaSRobert Mustacchi.Fa "uint32_t le32" 95*3b4b8bdaSRobert Mustacchi.Fc 96*3b4b8bdaSRobert Mustacchi.Ft uint64_t 97*3b4b8bdaSRobert Mustacchi.Fo le64toh 98*3b4b8bdaSRobert Mustacchi.Fa "uint64_t le64" 99*3b4b8bdaSRobert Mustacchi.Fc 100*3b4b8bdaSRobert Mustacchi.Ft uint16_t 101*3b4b8bdaSRobert Mustacchi.Fo letoh16 102*3b4b8bdaSRobert Mustacchi.Fa "uint16_t le16" 103*3b4b8bdaSRobert Mustacchi.Fc 104*3b4b8bdaSRobert Mustacchi.Ft uint32_t 105*3b4b8bdaSRobert Mustacchi.Fo letoh32 106*3b4b8bdaSRobert Mustacchi.Fa "uint32_t le32" 107*3b4b8bdaSRobert Mustacchi.Fc 108*3b4b8bdaSRobert Mustacchi.Ft uint64_t 109*3b4b8bdaSRobert Mustacchi.Fo letoh64 110*3b4b8bdaSRobert Mustacchi.Fa "uint64_t le64" 111*3b4b8bdaSRobert Mustacchi.Fc 112*3b4b8bdaSRobert Mustacchi.Sh DESCRIPTION 113*3b4b8bdaSRobert MustacchiThe 114*3b4b8bdaSRobert Mustacchi.Nm 115*3b4b8bdaSRobert Mustacchifamily of functions convert 16, 32, and 64-bit values between the host's 116*3b4b8bdaSRobert Mustacchinative byte order and big- or little-endian. All of the functions in 117*3b4b8bdaSRobert Mustacchithis family simply return their input when the host's native byte order 118*3b4b8bdaSRobert Mustacchiis the same as the desired order. For more information on 119*3b4b8bdaSRobert Mustacchiendianness, see 120*3b4b8bdaSRobert Mustacchi.Xr byteorder 5 . 121*3b4b8bdaSRobert Mustacchi.Pp 122*3b4b8bdaSRobert MustacchiThe 123*3b4b8bdaSRobert Mustacchi.Fn betoh16 , 124*3b4b8bdaSRobert Mustacchi.Fn betoh32 , 125*3b4b8bdaSRobert Mustacchiand 126*3b4b8bdaSRobert Mustacchi.Fn betoh64 127*3b4b8bdaSRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from 128*3b4b8bdaSRobert Mustacchibig-endian to the host's native endianness, swapping bytes as required. 129*3b4b8bdaSRobert Mustacchi.Pp 130*3b4b8bdaSRobert MustacchiThe 131*3b4b8bdaSRobert Mustacchi.Fn letoh16 , 132*3b4b8bdaSRobert Mustacchi.Fn letoh32 , 133*3b4b8bdaSRobert Mustacchiand 134*3b4b8bdaSRobert Mustacchi.Fn letoh64 135*3b4b8bdaSRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from 136*3b4b8bdaSRobert Mustacchilittle-endian to the host's native endianness, swapping bytes as 137*3b4b8bdaSRobert Mustacchirequired. 138*3b4b8bdaSRobert Mustacchi.Pp 139*3b4b8bdaSRobert MustacchiThe 140*3b4b8bdaSRobert Mustacchi.Fn htobe16 , 141*3b4b8bdaSRobert Mustacchi.Fn htobe32 , 142*3b4b8bdaSRobert Mustacchiand 143*3b4b8bdaSRobert Mustacchi.Fn htobe64 144*3b4b8bdaSRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from 145*3b4b8bdaSRobert Mustacchithe host's native endianness to big-endian, swapping bytes as required. 146*3b4b8bdaSRobert Mustacchi.Pp 147*3b4b8bdaSRobert MustacchiThe 148*3b4b8bdaSRobert Mustacchi.Fn htole16 , 149*3b4b8bdaSRobert Mustacchi.Fn htole32 , 150*3b4b8bdaSRobert Mustacchiand 151*3b4b8bdaSRobert Mustacchi.Fn htole64 152*3b4b8bdaSRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from 153*3b4b8bdaSRobert Mustacchithe host's native endianness to little-endian, swapping bytes as 154*3b4b8bdaSRobert Mustacchirequired. 155*3b4b8bdaSRobert Mustacchi.Pp 156*3b4b8bdaSRobert MustacchiThe functions 157*3b4b8bdaSRobert Mustacchi.Fn be16toh , 158*3b4b8bdaSRobert Mustacchi.Fn be32toh , 159*3b4b8bdaSRobert Mustacchi.Fn be64toh , 160*3b4b8bdaSRobert Mustacchi.Fn le16toh , 161*3b4b8bdaSRobert Mustacchi.Fn le32toh , 162*3b4b8bdaSRobert Mustacchiand 163*3b4b8bdaSRobert Mustacchi.Fn le64toh , 164*3b4b8bdaSRobert Mustacchiare the same as 165*3b4b8bdaSRobert Mustacchi.Fn betoh16 , 166*3b4b8bdaSRobert Mustacchi.Fn betoh32 , 167*3b4b8bdaSRobert Mustacchi.Fn betoh64 , 168*3b4b8bdaSRobert Mustacchi.Fn letoh16 , 169*3b4b8bdaSRobert Mustacchi.Fn letoh32 , 170*3b4b8bdaSRobert Mustacchiand 171*3b4b8bdaSRobert Mustacchi.Fn letoh64 172*3b4b8bdaSRobert Mustacchirespectively. Historically, different platforms have diverged on the 173*3b4b8bdaSRobert Mustacchinaming of these functions. To better support extant software, both are 174*3b4b8bdaSRobert Mustacchiprovided. 175*3b4b8bdaSRobert Mustacchi.Pp 176*3b4b8bdaSRobert MustacchiWhile these functions are common across multiple platforms, they have 177*3b4b8bdaSRobert Mustacchinot been standardized. Portable applications should instead use the 178*3b4b8bdaSRobert Mustacchifunctions defined in 179*3b4b8bdaSRobert Mustacchi.Xr byteorder 3C . 180*3b4b8bdaSRobert Mustacchi.Sh RETURN VALUES 181*3b4b8bdaSRobert MustacchiThe functions always succeed and return a value that has been properly 182*3b4b8bdaSRobert Mustacchiconverted. 183*3b4b8bdaSRobert Mustacchi.Sh INTERFACE STABILITY 184*3b4b8bdaSRobert Mustacchi.Sy Committed 185*3b4b8bdaSRobert Mustacchi.Sh MT-LEVEL 186*3b4b8bdaSRobert Mustacchi.Sy MT-Safe 187*3b4b8bdaSRobert Mustacchi.Sh SEE ALSO 188*3b4b8bdaSRobert Mustacchi.Xr byteorder 3C , 189*3b4b8bdaSRobert Mustacchi.Xr endian.h 3HEAD , 190*3b4b8bdaSRobert Mustacchi.Xr attributes 5 , 191*3b4b8bdaSRobert Mustacchi.Xr byteorder 5 192