엔디언 변환
입력(16진수)
스왑된 출력
기술적 세부 정보
엔디언 스왑 도구가 작동하는 방식
도구가 하는 일
엔디언 스왑 도구는 설정 가능한 워드 크기(2, 4, 또는 8바이트) 내에서 16진수 입력의 바이트 순서를 뒤집습니다. 이는 16진수로 저장된 고정 폭 정수의 리틀 엔디언과 빅 엔디언 표현 간 변환을 위한 것으로, 바이너리 파일 형식, 네트워크 프로토콜, 또는 바이트 순서에 대해 서로 다른 가정을 하는 저수준 디버깅 도구를 다룰 때 자주 필요합니다.
개발자들이 흔히 사용하는 사례
리버스 엔지니어는 x86 또는 ARM(리틀 엔디언)과 PowerPC 또는 MIPS(역사적으로 빅 엔디언)의 헥스 덤프를 정규화하여 아키텍처 간 값을 비교합니다. 네트워크 엔지니어는 호스트 바이트 순서 정수를 네트워크 바이트 순서(항상 빅 엔디언)로 변환한 뒤 패킷 캡처에 포함합니다. 임베디드 개발자는 플래시에 저장된 구조체를 분석 도구가 기대하는 형식에 맞게 바이트를 재정렬하여 디버깅합니다.
데이터 형식, 타입 또는 변형
입력은 `0x` 접두사 유무와 관계없이 16진수를 허용하며, 임의의 공백도 허용합니다. 출력은 가독성을 위해 공백으로 구분된 소문자 16진수 바이트로 렌더링됩니다. 워드 크기 2, 4, 8바이트는 각각 16, 32, 64비트 정수에 해당합니다. 여러 워드는 서로 독립적으로 스왑됩니다: 4바이트 워드 크기에서 12345678 9ABCDEF0는 78 56 34 12 다음에 F0 DE BC 9A가 됩니다.
흔한 함정과 엣지 케이스
입력은 바이트의 정수 개수(16진수 자릿수 짝수)여야 하며, 워드의 정수 개수(바이트 단위로 설정된 워드 크기로 나누어떨어짐)여야 합니다. 크기가 맞지 않으면 조용히 잘라내지 않고 오류를 반환합니다. 네트워크 바이트 순서는 항상 빅 엔디언이고, x86 / ARM은 리틀 엔디언을 사용합니다 — 와이어 포맷 정수를 읽거나 쓸 때 바이트를 스왑하세요.
코드 대신 이 도구를 사용해야 하는 경우
바이너리 덤프를 읽거나 디버깅할 때 일회성 변환에는 브라우저 도구를 사용하세요. 코드에서는 JavaScript의 `DataView`와 명시적인 `littleEndian` 플래그, Python `int.from_bytes`의 `byteorder='little'|'big'`, Go의 `binary.LittleEndian.Uint32`, 또는 C의 `ntohl` / `htonl`을 선호하세요 — 의도가 더 명확하고 16진수 왕복 변환을 피할 수 있습니다.