3바이트 묶음과 = 패딩으로 길이를 계산하세요
RFC 4648의 표준 Base64는 입력 3바이트를 출력 4문자로 표현합니다. 마지막 묶음에 1바이트가 남으면 ==, 2바이트가 남으면 = 패딩을 붙이고, 3바이트가 채워지면 패딩이 없습니다. 따라서 줄바꿈을 추가하지 않는 패딩 포함 결과 길이는 4 * Math.ceil(n / 3)입니다. n은 입력 바이트 수이며, 0이면 길이도 0입니다.
n = new TextEncoder().encode(input).length
length = 4 * Math.ceil(n / 3)
f 1 Zg== 4
fo 2 Zm8= 4
foo 3 Zm9v 4
foob 4 Zm9vYg== 8아래는 실제 함수로 확인한 고정 예제입니다. 입력 f, fo, foo의 길이는 서로 달라도 출력은 모두 4문자이고 패딩 개수가 다릅니다. foob는 4바이트이므로 출력이 8문자입니다. 패딩은 원문에 추가된 글자가 아니라 마지막 묶음의 형식을 표시합니다.
글자 수와 바이트 수, 줄바꿈을 구분하세요
Moyoutil은 TextEncoder로 입력을 UTF-8 바이트로 바꿉니다. 예제 가는 3바이트이고 Base64는 6rCA, 즉 4문자입니다. f 뒤에 줄바꿈 LF를 넣은 입력은 2바이트이고 결과는 Zgo=입니다. 인코딩할 원문 안의 공백과 줄바꿈은 데이터에 포함됩니다. HTTP 헤더, JSON 포장, 데이터 URL 접두사 등의 길이는 위 계산식에 포함되지 않습니다.
base64("가") // 6rCA
base64("f\n") // Zgo=Base64 도구에 원문을 입력하고 인코딩을 누른 뒤 결과를 확인합니다. 디코딩할 때는 표준 Base64 결과만 입력하세요. 이 도구는 디코딩 입력의 공백을 제거하지만 인코딩 원문의 공백은 제거하지 않습니다. Base64URL의 -와 _ 또는 임의 바이너리 파일 복원은 지원하지 않습니다. /w==는 Base64로 읽어도 UTF-8 텍스트가 아니므로 오류가 납니다. 입력을 바꾸면 이전 결과와 복사가 초기화되므로 다시 변환하세요.
자주 묻는 질문
출력 길이는 언제나 입력의 약 33% 증가인가요?
큰 입력에서는 4/3 비율에 가까워지지만 작은 입력의 패딩 영향은 큽니다. 1바이트는 4문자가 됩니다. 입력 바이트 수와 패딩 포함 여부를 확인하고 정확한 길이를 계산하세요.
빈 입력도 도구에서 0문자로 변환되나요?
길이 공식은 0바이트에서 0을 반환하지만, Moyoutil 화면은 빈 입력을 실행하면 내용을 입력하라는 오류를 표시합니다. 공식의 경계값과 화면의 입력 정책은 다릅니다.