17dc9a163SRobert Mustacchi.\" 27dc9a163SRobert Mustacchi.\" This file and its contents are supplied under the terms of the 37dc9a163SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 47dc9a163SRobert Mustacchi.\" You may only use this file in accordance with the terms of version 57dc9a163SRobert Mustacchi.\" 1.0 of the CDDL. 67dc9a163SRobert Mustacchi.\" 77dc9a163SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 87dc9a163SRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 97dc9a163SRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 107dc9a163SRobert Mustacchi.\" 117dc9a163SRobert Mustacchi.\" 127dc9a163SRobert Mustacchi.\" Copyright 2016 Joyent, Inc. 137dc9a163SRobert Mustacchi.\" 14cc581a18SYuri Pankov.Dd August 2, 2018 157dc9a163SRobert Mustacchi.Dt ENDIAN 3C 167dc9a163SRobert Mustacchi.Os 177dc9a163SRobert Mustacchi.Sh NAME 187dc9a163SRobert Mustacchi.Nm endian , 197dc9a163SRobert Mustacchi.Nm be16toh , 207dc9a163SRobert Mustacchi.Nm be32toh , 217dc9a163SRobert Mustacchi.Nm be64toh , 227dc9a163SRobert Mustacchi.Nm betoh16 , 237dc9a163SRobert Mustacchi.Nm betoh32 , 247dc9a163SRobert Mustacchi.Nm betoh64 , 257dc9a163SRobert Mustacchi.Nm htobe16 , 267dc9a163SRobert Mustacchi.Nm htobe32 , 277dc9a163SRobert Mustacchi.Nm htobe64 , 287dc9a163SRobert Mustacchi.Nm htole16 , 297dc9a163SRobert Mustacchi.Nm htole32 , 307dc9a163SRobert Mustacchi.Nm htole64 , 317dc9a163SRobert Mustacchi.Nm le16toh , 327dc9a163SRobert Mustacchi.Nm le32toh , 337dc9a163SRobert Mustacchi.Nm le64toh , 347dc9a163SRobert Mustacchi.Nm letoh16 , 357dc9a163SRobert Mustacchi.Nm letoh32 , 367dc9a163SRobert Mustacchi.Nm letoh64 377dc9a163SRobert Mustacchi.Nd convert between big and little endian byte order 387dc9a163SRobert Mustacchi.Sh SYNOPSIS 397dc9a163SRobert Mustacchi.In endian.h 407dc9a163SRobert Mustacchi.Ft uint16_t 417dc9a163SRobert Mustacchi.Fo be16toh 427dc9a163SRobert Mustacchi.Fa "uint16_t be16" 437dc9a163SRobert Mustacchi.Fc 447dc9a163SRobert Mustacchi.Ft uint32_t 457dc9a163SRobert Mustacchi.Fo be32toh 467dc9a163SRobert Mustacchi.Fa "uint32_t be32" 477dc9a163SRobert Mustacchi.Fc 487dc9a163SRobert Mustacchi.Ft uint64_t 497dc9a163SRobert Mustacchi.Fo betoh64 507dc9a163SRobert Mustacchi.Fa "uint64_t be64" 517dc9a163SRobert Mustacchi.Fc 527dc9a163SRobert Mustacchi.Ft uint16_t 537dc9a163SRobert Mustacchi.Fo betoh16 547dc9a163SRobert Mustacchi.Fa "uint16_t be16" 557dc9a163SRobert Mustacchi.Fc 567dc9a163SRobert Mustacchi.Ft uint32_t 577dc9a163SRobert Mustacchi.Fo betoh32 587dc9a163SRobert Mustacchi.Fa "uint32_t be32" 597dc9a163SRobert Mustacchi.Fc 607dc9a163SRobert Mustacchi.Ft uint64_t 617dc9a163SRobert Mustacchi.Fo be64toh 627dc9a163SRobert Mustacchi.Fa "uint64_t be64" 637dc9a163SRobert Mustacchi.Fc 647dc9a163SRobert Mustacchi.Ft uint16_t 657dc9a163SRobert Mustacchi.Fo htobe16 667dc9a163SRobert Mustacchi.Fa "uint16_t host16" 677dc9a163SRobert Mustacchi.Fc 687dc9a163SRobert Mustacchi.Ft uint32_t 697dc9a163SRobert Mustacchi.Fo htobe32 707dc9a163SRobert Mustacchi.Fa "uint32_t host32" 717dc9a163SRobert Mustacchi.Fc 727dc9a163SRobert Mustacchi.Ft uint64_t 737dc9a163SRobert Mustacchi.Fo htobe64 747dc9a163SRobert Mustacchi.Fa "uint64_t host64" 757dc9a163SRobert Mustacchi.Fc 767dc9a163SRobert Mustacchi.Ft uint16_t 777dc9a163SRobert Mustacchi.Fo htole16 787dc9a163SRobert Mustacchi.Fa "uint16_t host16" 797dc9a163SRobert Mustacchi.Fc 807dc9a163SRobert Mustacchi.Ft uint32_t 817dc9a163SRobert Mustacchi.Fo htole32 827dc9a163SRobert Mustacchi.Fa "uint32_t host32" 837dc9a163SRobert Mustacchi.Fc 847dc9a163SRobert Mustacchi.Ft uint64_t 857dc9a163SRobert Mustacchi.Fo htole64 867dc9a163SRobert Mustacchi.Fa "uint64_t host64" 877dc9a163SRobert Mustacchi.Fc 887dc9a163SRobert Mustacchi.Ft uint16_t 897dc9a163SRobert Mustacchi.Fo le16toh 907dc9a163SRobert Mustacchi.Fa "uint16_t le16" 917dc9a163SRobert Mustacchi.Fc 927dc9a163SRobert Mustacchi.Ft uint32_t 937dc9a163SRobert Mustacchi.Fo le32toh 947dc9a163SRobert Mustacchi.Fa "uint32_t le32" 957dc9a163SRobert Mustacchi.Fc 967dc9a163SRobert Mustacchi.Ft uint64_t 977dc9a163SRobert Mustacchi.Fo le64toh 987dc9a163SRobert Mustacchi.Fa "uint64_t le64" 997dc9a163SRobert Mustacchi.Fc 1007dc9a163SRobert Mustacchi.Ft uint16_t 1017dc9a163SRobert Mustacchi.Fo letoh16 1027dc9a163SRobert Mustacchi.Fa "uint16_t le16" 1037dc9a163SRobert Mustacchi.Fc 1047dc9a163SRobert Mustacchi.Ft uint32_t 1057dc9a163SRobert Mustacchi.Fo letoh32 1067dc9a163SRobert Mustacchi.Fa "uint32_t le32" 1077dc9a163SRobert Mustacchi.Fc 1087dc9a163SRobert Mustacchi.Ft uint64_t 1097dc9a163SRobert Mustacchi.Fo letoh64 1107dc9a163SRobert Mustacchi.Fa "uint64_t le64" 1117dc9a163SRobert Mustacchi.Fc 1127dc9a163SRobert Mustacchi.Sh DESCRIPTION 1137dc9a163SRobert MustacchiThe 1147dc9a163SRobert Mustacchi.Nm 1157dc9a163SRobert Mustacchifamily of functions convert 16, 32, and 64-bit values between the host's 11672d3dbb9SYuri Pankovnative byte order and big- or little-endian. 11772d3dbb9SYuri PankovAll of the functions in this family simply return their input when the host's 11872d3dbb9SYuri Pankovnative byte order is the same as the desired order. 11972d3dbb9SYuri PankovFor more information on endianness, see 120*bbf21555SRichard Lowe.Xr byteorder 7 . 1217dc9a163SRobert Mustacchi.Pp 1227dc9a163SRobert MustacchiThe 1237dc9a163SRobert Mustacchi.Fn betoh16 , 1247dc9a163SRobert Mustacchi.Fn betoh32 , 1257dc9a163SRobert Mustacchiand 1267dc9a163SRobert Mustacchi.Fn betoh64 1277dc9a163SRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from 1287dc9a163SRobert Mustacchibig-endian to the host's native endianness, swapping bytes as required. 1297dc9a163SRobert Mustacchi.Pp 1307dc9a163SRobert MustacchiThe 1317dc9a163SRobert Mustacchi.Fn letoh16 , 1327dc9a163SRobert Mustacchi.Fn letoh32 , 1337dc9a163SRobert Mustacchiand 1347dc9a163SRobert Mustacchi.Fn letoh64 1357dc9a163SRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from 1367dc9a163SRobert Mustacchilittle-endian to the host's native endianness, swapping bytes as 1377dc9a163SRobert Mustacchirequired. 1387dc9a163SRobert Mustacchi.Pp 1397dc9a163SRobert MustacchiThe 1407dc9a163SRobert Mustacchi.Fn htobe16 , 1417dc9a163SRobert Mustacchi.Fn htobe32 , 1427dc9a163SRobert Mustacchiand 1437dc9a163SRobert Mustacchi.Fn htobe64 1447dc9a163SRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from 1457dc9a163SRobert Mustacchithe host's native endianness to big-endian, swapping bytes as required. 1467dc9a163SRobert Mustacchi.Pp 1477dc9a163SRobert MustacchiThe 1487dc9a163SRobert Mustacchi.Fn htole16 , 1497dc9a163SRobert Mustacchi.Fn htole32 , 1507dc9a163SRobert Mustacchiand 1517dc9a163SRobert Mustacchi.Fn htole64 1527dc9a163SRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from 1537dc9a163SRobert Mustacchithe host's native endianness to little-endian, swapping bytes as 1547dc9a163SRobert Mustacchirequired. 1557dc9a163SRobert Mustacchi.Pp 1567dc9a163SRobert MustacchiThe functions 1577dc9a163SRobert Mustacchi.Fn be16toh , 1587dc9a163SRobert Mustacchi.Fn be32toh , 1597dc9a163SRobert Mustacchi.Fn be64toh , 1607dc9a163SRobert Mustacchi.Fn le16toh , 1617dc9a163SRobert Mustacchi.Fn le32toh , 1627dc9a163SRobert Mustacchiand 1637dc9a163SRobert Mustacchi.Fn le64toh , 1647dc9a163SRobert Mustacchiare the same as 1657dc9a163SRobert Mustacchi.Fn betoh16 , 1667dc9a163SRobert Mustacchi.Fn betoh32 , 1677dc9a163SRobert Mustacchi.Fn betoh64 , 1687dc9a163SRobert Mustacchi.Fn letoh16 , 1697dc9a163SRobert Mustacchi.Fn letoh32 , 1707dc9a163SRobert Mustacchiand 1717dc9a163SRobert Mustacchi.Fn letoh64 17272d3dbb9SYuri Pankovrespectively. 17372d3dbb9SYuri PankovHistorically, different platforms have diverged on the naming of these 17472d3dbb9SYuri Pankovfunctions. 17572d3dbb9SYuri PankovTo better support extant software, both are provided. 1767dc9a163SRobert Mustacchi.Pp 1777dc9a163SRobert MustacchiWhile these functions are common across multiple platforms, they have 17872d3dbb9SYuri Pankovnot been standardized. 17972d3dbb9SYuri PankovPortable applications should instead use the functions defined in 180cc581a18SYuri Pankov.Xr byteorder 3C . 1817dc9a163SRobert Mustacchi.Sh RETURN VALUES 1827dc9a163SRobert MustacchiThe functions always succeed and return a value that has been properly 1837dc9a163SRobert Mustacchiconverted. 1847dc9a163SRobert Mustacchi.Sh INTERFACE STABILITY 1857dc9a163SRobert Mustacchi.Sy Committed 1867dc9a163SRobert Mustacchi.Sh MT-LEVEL 1877dc9a163SRobert Mustacchi.Sy MT-Safe 1887dc9a163SRobert Mustacchi.Sh SEE ALSO 189cc581a18SYuri Pankov.Xr byteorder 3C , 1907dc9a163SRobert Mustacchi.Xr endian.h 3HEAD , 191*bbf21555SRichard Lowe.Xr attributes 7 , 192*bbf21555SRichard Lowe.Xr byteorder 7 193