JavaScript에서 숫자를 16진수 형식으로 표현하려면 먼저 숫자를 앞자리가 0으로 채워진 16진수 문자열로 변환한 뒤, 원하는 위치에 하이픈(-)을 추가하여 형식을 지정하면 됩니다.
이 과정은 크게 두 단계로 나눌 수 있습니다.
1단계: 0으로 채워진 16진수 문자열 만들기
toString(16) 메서드를 사용하면 숫자를 16진수 문자열로 변환할 수 있습니다. 이때 변환된 문자열 앞에 충분한 개수의 '0'을 붙인 후, 뒤에서부터 원하는 길이만큼 잘라내면 자릿수가 고정된 16진수 문자열을 얻을 수 있습니다.
2단계: 하이픈으로 구분하여 형식 지정하기
substr() 메서드를 활용해 문자열을 여러 구간으로 나누고, 각 구간 사이에 하이픈을 삽입하면 UUID와 같은 읽기 쉬운 형식으로 만들 수 있습니다.
예제
다음 코드를 실행하면 16진수를 원하는 형식으로 출력할 수 있습니다.
<!DOCTYPE html>
<html>
<body>
<script>
var num = 32122;
var myHex = ("000000000000000" + num.toString(16)).substr(-16);
var resHex = myHex.substr(0, 8)+'-'+myHex.substr(8,4)+'-'+myHex.substr(12,4);
document.write(resHex);
</script>
</body>
</html>코드 설명
num.toString(16): 숫자 32122를 16진수 문자열 '7d7a'로 변환합니다.("000000000000000" + ...).substr(-16): 앞에 15개의 0을 붙인 후 뒤에서 16자리만 가져와 총 길이 16자리의 문자열을 만듭니다.substr(0, 8),substr(8, 4),substr(12, 4): 문자열을 8자리, 4자리, 4자리로 나누고 하이픈으로 연결합니다.
출력 결과
00000000-0000-7d7a