endiannessalignmentbinary-format
Endianness와 data alignment를 설명해 주세요
- 예상 시간
- 7분
30초 답변
꼬리질문
조금 더 깊게 물어본다면
답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.
네트워크 byte order는 보통 무엇인가요?
little-endian의 예시는 어디에서 보나요?
alignment가 맞지 않으면 어떤 문제가 생기나요?
padding은 왜 생기나요?
바이너리 직렬화에서 무엇을 조심해야 하나요?
부가 설명
일반 애플리케이션 코드만 작성하면 endianness를 직접 볼 일이 많지 않습니다. 하지만 네트워크 패킷이나 바이너리 파일을 직접 읽는 순간 문제가 됩니다. 같은 4바이트라도 어떤 byte를 앞자리로 해석하느냐에 따라 숫자가 완전히 달라집니다.
Alignment도 비슷합니다. 구조체 필드를 그냥 이어 붙인다고 생각했는데, 컴파일러가 성능이나 CPU 요구사항 때문에 padding을 넣을 수 있습니다. 그래서 메모리 덤프, FFI, 파일 포맷을 다룰 때는 언어의 구조체 배치를 그대로 외부 형식으로 믿으면 위험합니다. 명시적인 직렬화가 안전한 이유가 여기에 있습니다.
한 줄 정리
Endianness는 byte 순서의 약속이고, alignment는 CPU가 다루기 좋은 주소 경계에 데이터를 맞추는 규칙입니다.