몽땅뚝딱 개발자

[JavaScript] 문자열의 바이트(byte) 구하기 본문

Development/Javascript

[JavaScript] 문자열의 바이트(byte) 구하기

레오나르도 다빈츠 2023. 3. 24. 23:07

 

/**
 * 문자열 총 byte 구하기
 * @param {string} str 문자열
 * @returns {number} 바이트
 */
export const getByteLength = (str) => {
  console.log('[str] result >>> ', str)
  if (str == null || str.length === 0) {
    return 0
  }
  let size = 0
  for (let i = 0; i < str.length; i++) {
    size += charByteSize(str.charAt(i))
  }
  return size
}

 

/**
 * 한글자 당 byte 구하기
 * @param {string} charValue 문자열
 * @returns {number} 바이트
 */
export const charByteSize = (charValue) => {
  if (charValue == null || charValue.length == 0) {
    return 0
  }

  let charCode = charValue.charCodeAt(0)
  if (charCode <= 0x00007f) {
    return 1
  } else if (charCode <= 0x0007ff) {
    return 2
  } else if (charCode <= 0x00ffff) {
    return 3
  } else {
    return 4
  }
}

 

/**
 * 지정된 byte만큼 문자열 자르기
 * @param {string} str 문자열
 * @param {number} len 자를 byte 개수
 * @returns {string} 잘린 문자열
 */
export const cutByteLength = (str, len) => {
  if (str == null || str.length == 0) {
    return ''
  }
  let size = 0
  let rIndex = str.length

  for (let i = 0; i < str.length; i++) {
    size += charByteSize(str.charAt(i))
    if (size == len) {
      rIndex = i + 1
      break
    } else if (size > len) {
      rIndex = i
      break
    }
  }

  return str.substring(0, rIndex)
}

 

 

 


개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.

 

 

Comments