프로그래머의 삶 Programmer's Life/Java!!

Characters to Bytes ( getBytes )

Oliver's World 2009. 12. 7. 17:33
728x90

String 클래스에서 getBytes() 메소드는 계산량이 가장 많은 메소드이다.
(사용해 보면 알겠지만 캐릭터셋 비교하고...encode....후덜덜이다.-_-;)
이 메소드는 char배열을 byte 배열로 바꿔주는 메소드인데 각각 유니코드 캐릭터는 하나나 둘 또는 심지어 3개의 바이트로 변환이 되며 이를 위한 판단 작업도 뒤따라야 한다.
단, ASCII 문자의 경우는 간단해진다. 각각의 ASCII 문자는 2byte 유니코드에서 한 byte 를 잘라버리고 남은 1byte 만을 변환하면 된다. 다양한 문자 인코딩 형식에 맞춰 변환시키기위해서는 좀 더 복잡하고 계산량이 많은 작업을 할 수밖에 없다. 그러나 ASCII는 인코딩 방식에 상관없이 1byte만 변환하면 되므로 계산량이 확인히 줄게 된다.


public static byte[] asciiGetBytes(String buf) {
  int size = buf.length();
  int i;
  byte[] bytebuf = new byte[size];
  for (i = 0; i < size; i++) {
   bytebuf[i] = (byte) buf.charAt(i);
  }

  return bytebuf;
 }

위의 방식.....으로 쓸 수 있다. 단...한글은 OTL

728x90