변환기

값을 다른 형식으로 변환하는 도구 모음입니다. 모든 처리가 브라우저에서 이루어지므로 데이터가 전송되지 않습니다.

변환 도구 고르기

유닉스 시간을 내 시간대와 UTC의 날짜로 읽을 때는 타임스탬프 변환기를, 2진수·8진수·10진수·16진수를 정확한 계산으로 다룰 때는 진법 변환기를, 식별자를 camelCase, snake_case, kebab-case 등으로 옮길 때는 대소문자 변환기를 사용하세요.

길이, 질량, 부피, 온도, 데이터, 시간에는 단위 변환기를, 파일 자체의 형식이나 크기를 바꿔야 할 때는 이미지 변환기와 크기 조절 도구를 사용하세요. 이미지는 기기를 떠나지 않습니다. 디코딩과 재인코딩은 브라우저에서 이루어집니다.

값, 표현, 단위

이 분류의 작업은 대개 둘 중 하나입니다. 값은 그대로이고 표현만 바뀌는 경우(255를 0xFF로 쓰기, 이름을 snake_case로 쓰기), 또는 킬로미터가 마일이 되고 섭씨가 화씨가 되듯 값 자체를 다른 단위로 다시 말하는 경우입니다.

이 구분이 중요한 이유는 앞의 것은 언제나 정확히 되돌릴 수 있지만 뒤의 것은 대개 그렇지 않기 때문입니다. 숫자를 16진수로 바꿨다가 되돌리면 같은 숫자가 나오지만, 이미지를 JPG로 바꿨다가 되돌리면 같은 이미지가 되지 않습니다.

무손실, 손실, 그리고 근사

진법 변환과 대소문자 변환은 원칙적으로 무손실이지만 알아 둘 예외가 하나 있습니다. 약어는 소문자로 바꾸면 경계를 잃어서 HTTPServer가 http_server가 되고, 되돌리면 HttpServer가 됩니다. 미터법과 야드파운드법 사이의 계수는 대부분 근삿값이 아니라 정의상 정확한 값이므로 그런 변환에는 오차가 전혀 없습니다.

진짜로 손실이 생기는 것은 이미지 도구로, 손실 방식으로 다시 인코딩할 때마다 조금씩 더 버려집니다. 달력의 달이나 해가 얽힌 변환도 마찬가지인데, 정확한 길이가 없어 평균값으로 표시됩니다. 결과가 정확한 값이 아니라 반올림한 값이라면 그렇다고 알려 줍니다.

가운데를 믿기 전에 가장자리를 확인하기

변환은 일반적인 범위보다 경계에서 훨씬 자주 실패합니다. 밀리초를 기대하는 곳에 초 단위 유닉스 타임스탬프를 넘기면 1970년이 됩니다. 64비트 식별자를 일반 JavaScript 숫자로 변환하면 약 900조를 넘는 지점부터 정밀도를 잃습니다. 원본 해상도를 넘겨 확대한 이미지에는 촬영된 적 없는 픽셀이 생깁니다.

여기의 도구들은 그런 경계에서 정직하도록 만들어졌습니다. 진법 변환은 임의 정밀도 연산을 쓰고, 타임스탬프는 단위를 명시하며, 브라우저 canvas에 비해 너무 큰 파일은 빈 이미지를 조용히 돌려주지 않고 거절합니다. 남의 변환 결과를 점검할 때는 경계 사례부터 시작하세요.