[JavaScript] String형 Bytes length 구하기

UTF-8 인코딩 방식 바이트 길이 구하기

한글 한글자당 3 바이트씩 계산됩니다.

1
2
3
4
5
6
7
8
9
10
// Function
const getByteLengthOfString = function (s, b, i, c) {
for (b = i = 0; (c = s.charCodeAt(i++)); b += c >> 11 ? 3 : c >> 7 ? 2 : 1);
return b;
};

// Test
const test = '테스트';

console.log('length : ', getByteLengthOfString(test), 'Bytes');
1
2
// 결과
length : 9 Bytes

한글의 경우 2바이트 계산되도록

다음의 함수를 통해 한글 문자열의 바이트 수를 2 바이트로 나오게 할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Function
String.prototype.getBytes = function () {
const contents = this;
let str_character;
let int_char_count = 0;
let int_contents_length = contents.length;

for (k = 0; k < int_contents_length; k++) {
str_character = contents.charAt(k);
if (escape(str_character).length > 4) int_char_count += 2;
else int_char_count++;
}

return int_char_count;
};

// Test
const test = '테스트';

console.log('length : ', test.getBytes(), 'Bytes');
1
2
// 결과
length : 6 Bytes

입력된 길이 만큼의 문자열을 리턴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Function
String.prototype.getStringFromByteLength = function (length) {
const contents = this;
let str_character;
let int_char_count = 0;
let int_contents_length = contents.length;

let returnValue = '';

for (k = 0; k < int_contents_length; k++) {
str_character = contents.charAt(k);
if (escape(str_character).length > 4) int_char_count += 2;
else int_char_count++;

if (int_char_count > length) {
break;
}
returnValue += str_character;
}
return returnValue;
};

// Test
const test = '테스트';

console.log('result : ', test.getStringFromByteLength(4));
1
2
// 결과
result: 테스;
Share