·5분 읽기

16진수 헷갈림 — 0xFF·#FFFFFF·CSS·MAC주소 5가지 진법 실전

0xFF·#FFFFFF·MAC 주소·UTF-8·서브넷 마스크에서 헷갈리는 진법 5가지 실전. 16진수·10진수·2진수 변환과 자주 틀리는 함정까지 정리했어요.

16진수 헷갈림 — 0xFF·#FFFFFF·CSS·MAC주소 5가지 진법 실전
🔢
진법 변환기 바로 사용하기
2진수, 8진수, 10진수, 16진수를 변환하세요

왜 진법이 자꾸 헷갈릴까요?

코드 보면 `0xFF`, `255`, `0b11111111` 다 보이는데 "이게 같은 값이야?" 갸우뚱한 적 있을 거예요. 셋 다 같은 숫자 — 10진수 255. 표기법만 달라요. 진법 표기 컨벤션. - **2진수(Binary)**: `0b` 접두사 (Python·JavaScript) - **8진수(Octal)**: `0o` 또는 `0` (예전 C 스타일) - **10진수(Decimal)**: 접두사 없음 - **16진수(Hex)**: `0x` 또는 `#` (CSS) 오늘 정리할 5가지. 1. C·Python의 `0xFF` — 비트 마스크 2. CSS `#FFFFFF` — 색상 코드 3. MAC 주소 `00:1A:2B:3C:4D:5E` — 6바이트 16진수 4. UTF-8 `EA B0 80` — 한글 한 글자 3바이트 5. 서브넷 마스크 `255.255.255.0` ↔ `/24` ↔ 2진수 실전 변환 시 [Toolkio 진법 변환기](https://toolkio.com/tools/number-base-converter)에 한 번에 넣고 4가지 진법 동시 확인.

케이스 1) 0xFF — 비트 마스크와 1바이트 최댓값

C, Python, JavaScript 코드에서 `0xFF`는 자주 등장. 의미는 1바이트(8비트)가 모두 1인 값. 변환. - 16진수: `0xFF` - 2진수: `0b11111111` (1이 8개) - 10진수: `255` 자주 쓰이는 곳. ```python # 하위 8비트 추출 (마스킹) value = 0x12AB low_byte = value & 0xFF # 0xAB = 171 # RGB 채널 분리 color = 0xFF8800 red = (color >> 16) & 0xFF # 0xFF = 255 green = (color >> 8) & 0xFF # 0x88 = 136 blue = color & 0xFF # 0x00 = 0 ``` 실수 포인트. - `0xFF` 와 `255` 헷갈리지 마세요. 같은 값인데 표기 다름 - C에서 `unsigned char`(0~255) 최댓값 = `0xFF` - `signed char`(-128~127) 최댓값 = `0x7F` = 127, 최솟값 = `0x80` = -128 (2의 보수) 2의 보수 함정. `0xFF`를 `signed char`로 해석하면 `-1`. 같은 비트 패턴이 데이터 타입 따라 의미 다름. C 캐스팅 시 자주 발생.

케이스 2) CSS #FFFFFF — RGB 16진수

CSS 색상 `#FFFFFF`는 흰색. 6자리 16진수가 RGB 3채널 각 2자리씩. 분해. - `#FFFFFF` = `#FF` + `#FF` + `#FF` - 빨강 255 + 초록 255 + 파랑 255 - 10진수 표기: `rgb(255, 255, 255)` 자주 쓰이는 색. - `#000000` = 검정 (RGB 0,0,0) - `#FF0000` = 빨강 (RGB 255,0,0) - `#00FF00` = 순녹색 (RGB 0,255,0) - `#1E90FF` = 도저블루 (RGB 30,144,255) 3자리 단축 표기. - `#F00` = `#FF0000` (각 자리 두 번 반복) - `#FFF` = `#FFFFFF` - `#1A2` = `#11AA22` (주의: 단순 반복 X, `#11`, `#AA`, `#22`) 8자리 RGBA. - `#FFFFFFFF` = 마지막 2자리가 알파(투명도) - `#FFFFFF80` = 50% 투명 흰색 - 알파 80(16진) = 128(10진) = 0.5 (0~255 범위) OKLCH·HSL은 16진수 아닌 함수형 표기. 최신 CSS는 [HEX vs RGB vs HSL 차이](/blog/hex-rgb-hsl-difference-designer-guide)에서 비교.

케이스 3) MAC 주소 — 6바이트 16진수

네트워크 인터페이스 MAC 주소. 형식 `XX:XX:XX:XX:XX:XX` (콜론) 또는 `XX-XX-XX-XX-XX-XX` (대시) 또는 `XXXXXXXXXXXX` (구분자 없음). 구조. - 6바이트 = 48비트 - 각 바이트 16진수 2자리 (00~FF) - 앞 3바이트 = OUI(제조사 식별) - 뒤 3바이트 = 제조사 내부 시리얼 예시. `00:1A:2B:3C:4D:5E` - `00:1A:2B` = OUI (이 예시는 실존 OUI) - `3C:4D:5E` = 시리얼 - 2진수로 펼치면: `00000000 00011010 00101011 00111100 01001101 01011110` 특수 비트. - 첫 바이트의 LSB(최하위 비트) = 1이면 멀티캐스트, 0이면 유니캐스트 - 첫 바이트의 두 번째 비트 = 1이면 로컬 관리(랜덤 MAC), 0이면 글로벌(제조사 할당) 예시. `02:1A:2B:3C:4D:5E` → 첫 바이트 02 = 0000 0010 → 두 번째 비트 1 → 로컬 관리 (사용자가 변경한 랜덤 MAC, iPhone·Android 프라이버시 기능). IPv6 EUI-64 변환 시 MAC 주소 가운데에 `FF:FE`를 끼워넣고 7번째 비트를 반전. 이 과정도 16진수↔2진수 변환의 정수.

케이스 4) UTF-8 한글 — 3바이트 16진수

한글 "가" 한 글자를 UTF-8로 인코딩하면 3바이트. 변환 과정. - 유니코드 코드포인트: U+AC00 (16진) - 10진: 44032 - 2진: `1010 1100 0000 0000` (16비트) - UTF-8 인코딩 규칙(U+0800~U+FFFF는 3바이트, 패턴 `1110xxxx 10xxxxxx 10xxxxxx`) - 16비트 → 4-6-6 분할 → `1010 + 110000 + 000000` - 3바이트 결과: `11101010 10110000 10000000` = `EA B0 80` 검증. ```python >>> '가'.encode('utf-8').hex() 'eab080' ``` UTF-8 한글 자주 쓰는 범위. - 가 ~ 힣 = U+AC00 ~ U+D7A3 - 16진: AC00 ~ D7A3 (총 11,172 글자) - UTF-8: EA B0 80 ~ ED 9E A3 주의. URL 인코딩에서 "가"는 `%EA%B0%80` (UTF-8 3바이트를 %로 표현). EUC-KR이면 `%B0%A1` (2바이트). 인코딩 다르면 깨짐. 자세한 건 [URL 인코딩 한글 파라미터 깨짐](/blog/url-encoding-korean-parameter-fix-guide)에서. Base64 변환과도 다름. UTF-8은 바이너리 인코딩, Base64는 그 바이너리를 ASCII로 한 번 더 인코딩.

케이스 5) 서브넷 마스크 — IP, 진법, CIDR

네트워크 서브넷 마스크 `255.255.255.0` ↔ CIDR `/24` ↔ 2진수 변환. 10진수 IPv4 4옥텟. - `255.255.255.0` - 각 옥텟 0~255 (1바이트씩) 2진수 변환. - 255 → `11111111` (8비트 모두 1) - 0 → `00000000` - 전체: `11111111.11111111.11111111.00000000` CIDR 표기. - 1의 개수 세기: 8 + 8 + 8 + 0 = 24 - `/24` (슬래시 24) 자주 쓰는 변환. | 마스크 | CIDR | 호스트 수 | |------|------|---------| | 255.0.0.0 | /8 | 16,777,214 | | 255.255.0.0 | /16 | 65,534 | | 255.255.255.0 | /24 | 254 | | 255.255.255.128 | /25 | 126 | | 255.255.255.192 | /26 | 62 | | 255.255.255.224 | /27 | 30 | | 255.255.255.240 | /28 | 14 | | 255.255.255.248 | /29 | 6 | | 255.255.255.252 | /30 | 2 | 호스트 수 = 2^(32-CIDR) - 2 (네트워크 주소·브로드캐스트 제외). 주의. 마스크는 반드시 1이 연속해야 함. `255.255.255.16`처럼 중간에 0 끼면 잘못된 마스크. 2진수로 펼쳐서 확인 필수. 16진수로는 `0xFF.0xFF.0xFF.0x00`. 실무. 라우팅 테이블·방화벽 룰·DHCP 설정에서 매일 등장. 변환 헷갈리면 [Toolkio 진법 변환기](https://toolkio.com/tools/number-base-converter)에 10진수 입력 → 2진수 자동.

Toolkio 진법 변환기 — 4진법 한 번에

[Toolkio 진법 변환기](https://toolkio.com/tools/number-base-converter)에 숫자 하나 입력하면 2·8·10·16진수 동시 표시. 비트 시각화도 제공해서 마스킹·시프트 디버깅에 유용. 사용 예. 1. `0xFF` 입력 → 255, 0b11111111, 0o377 즉시 2. `255.255.255.0` 한 옥텟씩 변환 → `/24` CIDR 도출 3. UTF-8 디버깅: `0xEAB080` → `15446144` (10진), `1110 1010 1011 0000 1000 0000` (2진) 4. RGB → HEX: `rgb(30,144,255)` → 30=0x1E, 144=0x90, 255=0xFF → `#1E90FF` 5. MAC 주소 OUI 검색 시 `00:1A:2B`만 따로 변환 → 10진수로 OUI 데이터베이스 조회 관련 글로 [HEX vs RGB 색상 변환 원리](/blog/hex-rgb-color-conversion-principle)에서 색상 진법 심화, [URL 인코딩 한글 파라미터](/blog/url-encoding-korean-parameter-fix-guide)에서 UTF-8 인코딩 디버깅을 이어 보세요. 진법 헷갈림은 한 번 정리하면 평생 가요. 5초 변환으로 디버깅 시간 1시간 절약.

지금 바로 진법 변환기를 사용해보세요

무료이며, 브라우저에서 바로 실행됩니다.

진법 변환기