๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/Javascript

javascript byte ์ˆ˜ ๊ณ„์‚ฐ

by 1mj 2022. 6. 21.

euc-kr byte ๊ตฌํ•˜๊ธฐ

ํ•œ๊ธ€ ํ•œ ๊ธ€์ž๋‹น 2byte ๊ธฐ์ค€ ๋ฐ”์ดํŠธ ์ˆ˜ ๊ณ„์‚ฐ

 

function calcByteEuckr(str) {
  return str
    .split('') 
    .map(s => s.charCodeAt(0))	// ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜
    .reduce((prev, c) => (prev + ((c === 10) ? 2 : ((c >> 7) ? 2 : 1))), 0); // c ๊ฐ’์ด 0~127์‚ฌ์ด์— ์žˆ์œผ๋ฉด 1๋ฐ”์ดํŠธ
}

 

 

์ตœ๋Œ€ byte ๋งŒํผ๋งŒ ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ

 

function getLimitedByteEuckrText(str, maxByte) {
  if (!str) return;
  let b;
  for (b = i = 0; (c = str.charCodeAt(i)); ) {
    b += (c === 10) ? 2 : ((c >> 7) ? 2 : 1);

    if (maxByte && b > maxByte) {
      break;
    }

    i++;
  }
  return maxByte ? str.substring(0, i) : b;
}

๋Œ“๊ธ€