자바(Java)에서 문자열 바이트 수를 세는 방법에 대하여 알아보도록 하겠습니다. 문자열 바이트 수 계산을 위한 방법은 여러 가지 방법이 있지만, 이번에는 비트 단위 연산자를 활용하는 방법에 대하여 다루어보도록 하겠습니다.
Java 문자열(String) 바이트(Byte) 수 계산
비트 연산자를 활용한 바이트 수 계산
- 먼저 비트 연산자를 이용하기 위하여 아스키코드(ASCII) 값을 사용하여 계산하겠습니다. 아스키코드 영문과 숫자의 값은 128보다 작습니다.
- 영문(소문자 : 97~122, 대문자 : 65 ~ 90)
- 숫자([0-9] : 48 ~ 57)
- 비트 연산자 Shit Right(>>)를 통해서 한글 / 영문, 숫자를 판단 후 Byte 수 합산
(참조 [128] = 1000 0000 , [128 >> 7] = 0000 0001)
String str = "a1가b나2";
System.out.println("str = " + str);
int totalByte = 0;
// 문자열 길이만큼 반복
for(int i = 0; i<str.length(); i++)
{
int nStr = str.charAt(i); // 해당 i번째 문자의 아스키코드값
System.out.println("\nstr.charAt(" + i + ")" + "[" + str.substring(i,i+1) + "] = " + nStr);
// 비트 연산자를 이용하여 한글/영문,숫자를 판단
System.out.println("nStr >> 7 = " + (nStr>>7));
if ((nStr>>7) > 0)
{
totalByte += 2;
System.out.print("[한글 2byte] ");
}
else
{
totalByte += 1;
System.out.print("[영문, 숫자 1byte] ");
}
// 바이트(byte) 출력
System.out.println("totalByte = " + totalByte);
}
결과
str = a1가b나2
str.charAt(0)[a] = 97
nStr >> 7 = 0
[영문, 숫자 1byte] totalByte = 1
str.charAt(1)[1] = 49
nStr >> 7 = 0
[영문, 숫자 1byte] totalByte = 2
str.charAt(2)[가] = 44032
nStr >> 7 = 344
[한글 2byte] totalByte = 4
str.charAt(3)[b] = 98
nStr >> 7 = 0
[영문, 숫자 1byte] totalByte = 5
str.charAt(4)[나] = 45208
nStr >> 7 = 353
[한글 2byte] totalByte = 7
str.charAt(5)[2] = 50
nStr >> 7 = 0
[영문, 숫자 1byte] totalByte = 8
이상으로 자바(Java)에서 문자열(String)의 바이트(Byte) 수를 계산하기 위하여 비트 연산자(Shift)를 활용하는 방법에 대하여 알아보았습니다.
'JAVA' 카테고리의 다른 글
[Java] 문자열을 숫자로 String to Int 형변환 (0) | 2023.08.04 |
---|---|
Java 소켓(Socket) 프로그래밍과 연결 방식 (0) | 2022.12.20 |
JAVA Windows 10 JDK, JRE 설치 경로, 버전 확인 (0) | 2022.12.14 |
Java 멀티스레드(Multi Thread) 동기화(Synchronized) 설명 (0) | 2022.12.14 |
Java 문자열(String) 비교 다양한 사용 방법 (0) | 2022.12.13 |
댓글