Linux hexadecimal 만들기

인코딩을 변경하게 되면 영어 외의 언어는 터미널에서 깨져 보인다.
예) utf8로 설정된 터미널에서 euc-kr 글자를 보는 경우 또는 반대의 경우

이럴때 hexadecimal(16진법, hex)로 변경하면 깨져 보이지 않고,
인코딩 관련 테스트 코드를 만들때에도 == 등으로 비교하기도 용이하다.

linux 에서 hex 로 변경하는 툴로 hexdump, xxd 를 많이 쓴다.
/usr/bin/hexdump
/usr/local/bin/xxd

# 파일 내용 hex 로 보기
hexdump ysoftman.txt

# stdout 내용 hex 로 보기
# 참고로 끝에 LF(0a) 이 추가된다.
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump

# Canonical형식(오른쪽에 문자내용 추가로 출력)으로 hex 로 보기
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump -C

# n 바이트만 hex 로 보기
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump -n 3

# 2바이트씩 구분해서 hex 로 보기
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump -x

# 주소 표시 없이 -e '포맷' 설정하여 헥사값 보기
# 100/1 : 100바이트 마다, 1바이트 기준(구분)으로, 출력 포맷을 적용
# "%02x " : 출력포맷, 2자리(0채움)hex를 공백 구분하여 출력
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump -e '100/1 "%02x "'

comments:

댓글 쓰기