2진수 → 16진수 변환기

→
오른쪽부터 비트를 네 개씩 묶고 각 묶음을 기수 16의 한 자리로 적기

2진수 → 16진수: 네 비트에 한 자리, 계산 없음

이 변환이 하는 일

2진수 문자열을 네 비트씩 다시 묶어 각 묶음을 기수 16의 한 자리로 씁니다. 열여섯 줄짜리 대조표 말고는 계산이 필요 없어서 눈으로 할 만한 유일한 변환입니다. 안정적으로 훑어보기 어려울 만큼 길어진 비트 패턴을 읽는 표준적인 방법입니다.

네 자리 묶음이 정확히 맞는 이유

16은 2의 네제곱이므로 2진수 네 자리가 기수 16의 한 자리와 정확히 대응합니다. 남는 자리도 반쪽짜리 묶음도 생기지 않습니다. 바이트 단위 데이터에 8진수보다 16진수를 쓰는 이유가 이것입니다. 여덟 비트는 네 자리 두 묶음으로 나뉘지만 3은 8을 나누지 못합니다.

2진수 → 16진수 변환표

가능한 네 비트 묶음 열여섯 개와 그 16진수 자리입니다. 이 표를 외우면 기술은 끝이고 그 뒤로는 계산이 아니라 받아쓰기가 됩니다.

2진수16진수
00
11
102
113
1010A
1111F
1000010
1010102A
11111111FF
100000000100

디버깅 중에 하게 되는 변환

프로토콜 필드나 레지스터, 비트마스크가 2진수로 도착했는데 문서는 16진수로 적어 두었을 때 가운데에서 하는 번역이 이것입니다. 네 비트씩 묶으면 검산도 함께 됩니다. 전체 비트 수가 4의 배수가 아니면 어딘가에서 비트가 빠진 것이고, 값이 사람을 잘못 인도하기 전에 그 사실을 알게 됩니다.

앞 묶음은 짐작하지 말고 채우세요

여섯 비트짜리 문자열은 한 자리 반이라 성립하지 않습니다. 왼쪽 묶음을 0으로 채워 네 자리로 만들고 변환하세요. 101011은 0010 1011이 됩니다. 정렬을 짐작으로 넘기면 값이 열여섯 배 틀어지는 길입니다.

자주 묻는 질문

2진수를 16진수로 손으로 바꾸려면 어떻게 하나요?

오른쪽부터 네 비트씩 묶고 왼쪽 묶음이 짧으면 0으로 채운 다음 각 묶음을 16진수 자리로 바꿉니다. 10011100은 1001 1100이 되고 이는 9C입니다.

왼쪽이 아니라 오른쪽부터 묶는 이유는 무엇인가요?

오른쪽 끝이 가장 낮은 자리값을 담고 있고 묶음은 자리값을 따라야 의미가 있기 때문입니다. 길이가 4의 배수가 아닐 때 왼쪽부터 묶으면 모든 자리가 밀려서 정렬만 어긋나는 게 아니라 값 자체가 조용히 달라집니다.

한 바이트에 16진수 자리가 몇 개 필요한가요?

정확히 두 개입니다. 바이트는 여덟 비트이고 네 비트가 한 자리를 이루기 때문입니다. 이 고정된 관계가 16진수를 바이트 단위 데이터의 기본 표기로 만들었고 메모리 덤프를 두 자리 짝의 연속으로 읽을 수 있게 합니다.

긴 비트 문자열도 처리되나요?

됩니다. 64비트 값은 16진수 열여섯 자리가 되고 근삿값이 아니라 정확한 값입니다. 이 도구는 처음부터 끝까지 정수 연산을 쓰므로 부동소수점이 반올림을 시작하는 큰 쪽 끝에서도 아무것도 잃지 않습니다.

이미 공백이 들어 있는 2진수를 붙여 넣어도 되나요?

됩니다. 공백과 밑줄은 변환 전에 제거되므로 터미널이나 데이터시트, 비교 화면에서 복사한 2진수도 정리하지 않고 쓸 수 있습니다. 원본에 보이는 묶음은 값에 영향을 주지 않습니다.

아래 코드를 복사하여 웹사이트에 붙여넣으면 이 변환기를 추가할 수 있습니다.

<!-- 2진수를 16진수로 -->
<iframe src="https://unitflow.net/ko/embed/binary-to-hex" title="2진수를 16진수로" width="100%" height="420" loading="lazy" style="border:0;max-width:100%;display:block"></iframe>
<p><a href="https://unitflow.net/ko/binary-to-hex" target="_blank" rel="noopener">UnitFlow 제공</a></p>