Programming/JAVA
[JAVA] GetBytes
Plone
2020. 9. 13. 00:38
package Study;
public class GetBytesStudy {
public static void main(String[] args) {
String str1 = "ABC123";
String str2 = "안녕";
try {
byte[] byteArr1 = str1.getBytes("UTF-8");
byte[] byteArr2 = str2.getBytes("UTF-8");
System.out.println(byteArr1);//[B@15db9742
System.out.println(byteArr2);//[B@6d06d69c
System.out.println(new String(byteArr1, "UTF-8"));//ABC123
System.out.println(new String(byteArr2, "UTF-8"));//안녕
for(int i=0; i<byteArr1.length;i++) {
System.out.print(byteArr1[i]);//아스키 코드로 출력
System.out.print("[" + (char)byteArr1[i] + "] ");//아스키 코드로 출력
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
String객체를 바이트배열(byte[])로 변환해주는 메서드
변환한 문자열(String)은 아스키 코드(10진)로 들어간다(Character set에 따라 달라짐)
바이트 배열은 ByteArrayInputputStream, ByteArrayOutputStream을 통해 입출력이 가능한데
애초에 굳이 바이트배열로 변환을 하지않아도 문자열 자체만으로도 입출력이 가능하기 때문에 굳이 쓸필요는 없다
ByteArrayInputputStream, ByteArrayOutputStream는 InputStream과 OutputStream을 상속(extends)받은 클래스이다
ByteArrayInputputStream, ByteArrayOutputStream 사용 예시
package Study;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
public class ByteArrayInputStreamStudy {
public static void main(String[] args) {
String str = "ABC123";
int i;
try {
byte[] byteArr = str.getBytes("UTF-8");//문자열을 바이트배열로 변환
ByteArrayInputStream bais = new ByteArrayInputStream(byteArr);//바이트배열읽기스트림으로 읽어들임
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ( (i=bais.read()) != -1 ){//읽어서 변수 i에 넣고, 값이 더 이상 없다면 read()는 -1을 반환
baos.write(i);//바이트배열쓰기스트림에 입력
}
byte[] byteArrCopy = baos.toByteArray();//바이트 배열 복사
for(i=0; i<byteArrCopy.length; i++) {
System.out.print(byteArrCopy[i]);//아스키 코드로 출력
System.out.print("[" + (char)byteArrCopy[i] + "] ");//아스키 코드로 출력
}
} catch (Exception e) {
e.printStackTrace();
}
}
}