endian(3) Library Functions Manual endian(3) NUME htobe16, htole16, be16toh, le16toh, htobe32, htole32, be32toh, le32toh, htobe64, htole64, htole64, be64toh, le64toh - convertete valorile intre gazda i ordinea octeilor big-/little-endian BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include uint16_t htobe16(uint16_t host_16bits); uint16_t htole16(uint16_t host_16bits); uint16_t be16toh(uint16_t big_endian_16bits); uint16_t le16toh(uint16_t little_endian_16bits); uint32_t htobe32(uint32_t host_32bits); uint32_t htole32(uint32_t host_32bits); uint32_t be32toh(uint32_t big_endian_32bits); uint32_t le32toh(uint32_t little_endian_32bits); uint64_t htobe64(uint64_t host_64bits); uint64_t htole64(uint64_t host_64bits); uint64_t be64toh(uint64_t big_endian_64bits); uint64_t le64toh(uint64_t little_endian_64bits); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): htobe16(), htole16(), be16toh(), le16toh(), htobe32(), htole32(), be32toh(), le32toh(), htobe64(), htole64(), be64toh(), le64toh(): Incepand cu glibc 2.19: _DEFAULT_SOURCE In glibc pana la versiunea 2.19 inclusiv: _BSD_SOURCE DESCRIERE Aceste funcii convertesc codificarea pe octei a valorilor intregi din ordinea pe octei pe care o utilizeaza unitatea centrala de procesare curenta (,,gazda") in i din ordinea de octei little-endian i big-endian. Numarul, nn, din numele fiecarei funcii indica dimensiunea numarului intreg gestionat de funcie, fie 16, 32 sau 64 de bii. Funciile cu nume de forma ,,htobenn" convertesc din ordinea octeilor gazda in ordinea big-endian. Funciile cu nume de forma ,,htolenn" convertesc din ordinea octeilor gazda in ordinea little-endian. Funciile cu nume de forma ,,benntoh" convertesc din ordinea big-endian in ordinea octeilor gazdei. Funciile cu nume de forma ,,lenntoh" convertesc din ordinea little-endian in ordinea octeilor gazdei. VERSIUNI Funcii similare sunt prezente pe BSD, unde fiierul de antet necesar este in loc de . Din nefericire, NetBSD, FreeBSD i glibc nu au urmat convenia originala de denumire OpenBSD pentru aceste funcii, conform careia componenta nn apare intotdeauna la sfaritul numelui funciei (astfel, de exemplu, in NetBSD, FreeBSD i glibc, echivalentul lui OpenBSD ,,betoh32" este ,,be32toh"). STANDARDE Niciunul. ISTORIC glibc 2.9. Aceste funcii sunt similare cu familia de funcii mai veche byteorder(3). De exemplu, be32toh() este identica cu ntohl(). Avantajul funciilor byteorder(3) este ca sunt funcii standard disponibile pe toate sistemele UNIX. Pe de alta parte, faptul ca au fost concepute pentru a fi utilizate in contextul TCP/IP inseamna ca nu dispun de variantele pe 64 de bii i little-endian descrise in aceasta pagina. EXEMPLE Programul de mai jos afieaza rezultatele conversiei unui numar intreg din ordinea octeilor gazdei in ordinea octeilor little-endian i big-endian. Deoarece ordinea octeilor gazdei este fie little-endian, fie big-endian, numai una dintre aceste conversii va avea efect. Atunci cand rulam acest program pe un sistem little-endian, cum ar fi x86-32, vom vedea urmatoarele: $ ./a.out x.u32 = 0x44332211 htole32(x.u32) = 0x44332211 htobe32(x.u32) = 0x11223344 Sursa programului #include #include #include #include int main(void) { union { uint32_t u32; uint8_t arr[4]; } x; x.arr[0] = 0x11; /* Cel mai mic octet de adresa */ x.arr[1] = 0x22; x.arr[2] = 0x33; x.arr[3] = 0x44; /* Cel mai mare octet de adresa */ printf("x.u32 = %#x\n", x.u32); printf("htole32(x.u32) = %#x\n", htole32(x.u32)); printf("htobe32(x.u32) = %#x\n", htobe32(x.u32)); exit(EXIT_SUCCESS); } CONSULTAI I bswap(3), byteorder(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 endian(3)