Little-endian, Big-endian
2024. 7. 15. 19:16ㆍ프로그래밍/네트워크
IP주소 체계를 설명하기 위해 우선 Big-endian, Little-endian에 대해 정리 합니다.
- Big-endian: 큰 바이트가 먼저 저장됩니다. 예를 들어, 0x12345678이라는 숫자는 메모리에 0x12 0x34 0x56 0x78 순으로 저장됩니다.
- Little-endian: 작은 바이트가 먼저 저장됩니다. 예를 들어, 0x12345678이라는 숫자는 메모리에 0x78 0x56 0x34 0x12 순으로 저장됩니다.
* 0x12345678이 big-endian과 little-endian으로 저장될 때의 메모리 구조
Big-endian:
0x00: 0x12
0x01: 0x34
0x02: 0x56
0x03: 0x78
Little-endian:
0x00: 0x78
0x01: 0x56
0x02: 0x34
0x03: 0x12
IP 주소 변환코드를 ChatGPT로 생성해 봤다.
#include <stdio.h>
#include <stdint.h>
// 엔디안 변환 함수
uint32_t swap_endian(uint32_t val) {
return ((val >> 24) & 0xff) | // 상위 8비트를 하위 8비트로
((val << 8) & 0xff0000) | // 중위 16비트를 상위 16비트로
((val >> 8) & 0xff00) | // 하위 16비트를 중위 16비트로
((val << 24) & 0xff000000); // 하위 8비트를 상위 8비트로
}
int main() {
uint32_t num = 0x12345678;
uint32_t swapped = swap_endian(num);
printf("Original: 0x%x\n", num);
printf("Swapped: 0x%x\n", swapped);
return 0;
}
엔디언에 대해 좀 더 알고 싶다면 (위키피디아): https://ko.wikipedia.org/wiki/%EC%97%94%EB%94%94%EC%96%B8
엔디언 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. Big-Endian Little-Endian 엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특
ko.wikipedia.org