endian(3) - wariua/manpages-ko GitHub Wiki

NAME

htobe16, htole16, be16toh, le16toh, htobe32, htole32, be32toh, le32toh, htobe64, htole64, be64toh, le64toh - 호슀트 λ°”μ΄νŠΈ μˆœμ„œμ™€ λΉ…/리틀 μ—”λ””μ–Έ λ°”μ΄νŠΈ μˆœμ„œ 간에 κ°’ λ³€ν™˜ν•˜κΈ°

SYNOPSIS

#include <endian.h>

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);

glibc κΈ°λŠ₯ 확인 맀크둜 μš”κ±΄ (feature_test_macros(7) μ°Έκ³ ):

htobe16(), htole16(), be16toh(), le16toh(), htobe32(), htole32(), be32toh(), le32toh(), htobe64(), htole64(), be64toh(), le64toh():
glibc 2.19λΆ€ν„°:
_DEFAULT_SOURCE
glibc 2.19κΉŒμ§€:
_BSD_SOURCE

DESCRIPTION

이 ν•¨μˆ˜λ“€μ€ ν˜„μž¬ CPU("호슀트")μ—μ„œ μ“°λŠ” λ°”μ΄νŠΈ μˆœμ„œμ™€ 리틀 μ—”λ””μ–Έ 및 λΉ… μ—”λ””μ–Έ λ°”μ΄νŠΈ μˆœμ„œ μ‚¬μ΄μ—μ„œ μ •μˆ˜ κ°’μ˜ λ°”μ΄νŠΈ 인코딩을 λ³€ν™˜ν•œλ‹€.

ν•¨μˆ˜ μ΄λ¦„μ˜ 숫자 nn은 ν•¨μˆ˜μ—μ„œ λ‹€λ£¨λŠ” μ •μˆ˜μ˜ 크기λ₯Ό λ‚˜νƒ€λ‚΄λ©°, 16, 32, 64λΉ„νŠΈ 쀑 ν•˜λ‚˜μ΄λ‹€.

이름이 "htobenn" ν˜•νƒœμΈ ν•¨μˆ˜λŠ” 호슀트 λ°”μ΄νŠΈ μˆœμ„œμ—μ„œ λΉ… μ—”λ””μ–Έ μˆœμ„œλ‘œ λ³€ν™˜ν•œλ‹€.

이름이 "htolenn" ν˜•νƒœμΈ ν•¨μˆ˜λŠ” 호슀트 λ°”μ΄νŠΈ μˆœμ„œμ—μ„œ 리틀 μ—”λ””μ–Έ μˆœμ„œλ‘œ λ³€ν™˜ν•œλ‹€.

이름이 "benntoh" ν˜•νƒœμΈ ν•¨μˆ˜λŠ” λΉ… μ—”λ””μ–Έ μˆœμ„œμ—μ„œ 호슀트 λ°”μ΄νŠΈ μˆœμ„œλ‘œ λ³€ν™˜ν•œλ‹€.

이름이 "lenntoh" ν˜•νƒœμΈ ν•¨μˆ˜λŠ” 리틀 μ—”λ””μ–Έ μˆœμ„œμ—μ„œ 호슀트 λ°”μ΄νŠΈ μˆœμ„œλ‘œ λ³€ν™˜ν•œλ‹€.

VERSIONS

glibc 버전 2.9μ—μ„œ 이 ν•¨μˆ˜λ“€μ΄ μΆ”κ°€λ˜μ—ˆλ‹€.

CONFORMING TO

이 ν•¨μˆ˜λ“€μ€ λΉ„ν‘œμ€€μ΄λ‹€. λΉ„μŠ·ν•œ ν•¨μˆ˜λ“€μ΄ BSD듀에 μ‘΄μž¬ν•˜λŠ”λ° κ±°κΈ°μ„œ ν•„μš”ν•œ 헀더 νŒŒμΌμ€ <endian.h>κ°€ μ•„λ‹ˆλΌ <sys/endian.h>이닀. μ•ˆνƒ€κΉκ²Œλ„ NetBSD, FreeBSD, glibcμ—μ„œλŠ” nn 뢀뢄이 항상 ν•¨μˆ˜ 이름 끝에 μ˜€λŠ” OpenBSD의 μ›λž˜ λͺ…λͺ… 관행을 λ”°λ₯΄μ§€ μ•ŠλŠ”λ‹€. (κ·Έλž˜μ„œ 예λ₯Ό λ“€μ–΄ OpenBSD "betoh32"의 등가물이 NetBSD, FreeBSD, glibcμ—μ„œλŠ” "be32toh"이닀.)

NOTES

이 ν•¨μˆ˜λ“€μ€ 더 였래된 byteorder(3) 계열 ν•¨μˆ˜λ“€κ³Ό λΉ„μŠ·ν•˜λ‹€. 예λ₯Ό λ“€μ–΄ be32toh()λŠ” ntohl()κ³Ό κ°™λ‹€.

byteorder(3) ν•¨μˆ˜λ“€μ˜ μž₯점은 ν‘œμ€€ ν•¨μˆ˜λΌμ„œ λͺ¨λ“  μœ λ‹‰μŠ€ μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€λŠ” 점이닀. ν•˜μ§€λ§Œ TCP/IP λ§₯λ½μ—μ„œ μ“°λ €κ³  μ„€κ³„ν•œ 것이기 λ•Œλ¬Έμ— 이 νŽ˜μ΄μ§€μ— 기술된 64λΉ„νŠΈ ν˜•νƒœμ™€ 리틀 μ—”λ””μ–Έ ν˜•νƒœκ°€ λΉ μ Έ μžˆλ‹€.

EXAMPLE

μ•„λž˜ ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” μ •μˆ˜λ₯Ό 호슀트 λ°”μ΄νŠΈ μˆœμ„œμ—μ„œ 리틀 μ—”λ””μ–Έ 및 λΉ… μ—”λ””μ–Έ λ°”μ΄νŠΈ μˆœμ„œλ‘œ λ³€ν™˜ν•œ κ²°κ³Όλ₯Ό 보여 μ€€λ‹€. 호슀트 λ°”μ΄νŠΈ μˆœμ„œκ°€ 리틀 μ—”λ””μ–Έ μ•„λ‹ˆλ©΄ λΉ… μ—”λ””μ–Έμ΄λ―€λ‘œ λ³€ν™˜ 쀑 ν•œμͺ½λ§Œ νš¨κ³Όκ°€ 있게 λœλ‹€. 이 ν”„λ‘œκ·Έλž¨μ„ x86-32 같은 리틀 μ—”λ””μ–Έ μ‹œμŠ€ν…œμ—μ„œ 돌리면 λ‹€μŒμ„ 보게 λœλ‹€.

$ ./a.out
x.u32 = 0x44332211
htole32(x.u32) = 0x44332211
htobe32(x.u32) = 0x11223344

ν”„λ‘œκ·Έλž¨ μ†ŒμŠ€

#include <endian.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    union {
        uint32_t u32;
        uint8_t arr[4];
    } x;

    x.arr[0] = 0x11;    /* μ΅œν•˜μœ„ μ£Όμ†Œ λ°”μ΄νŠΈ */
    x.arr[1] = 0x22;
    x.arr[2] = 0x33;
    x.arr[3] = 0x44;    /* μ΅œμƒμœ„ μ£Όμ†Œ λ°”μ΄νŠΈ */

    printf("x.u32 = 0x%x\n", x.u32);
    printf("htole32(x.u32) = 0x%x\n", htole32(x.u32));
    printf("htobe32(x.u32) = 0x%x\n", htobe32(x.u32));

    exit(EXIT_SUCCESS);
}

SEE ALSO

bswap(3), byteorder(3)


2019-03-06

⚠️ **GitHub.com Fallback** ⚠️