. getBytes() 메서드
사용 예제 ) 코드를 복붙 하여 실행해 보시기 바랍니다. 설명은 코드 아래 부분에 있습니다.
public class Sample {
public static void main(String[] args) {
/////////////////getBytes() 예제
String strTest = "테스트할 문자열 입니다.";
byte[] bTest = strTest.getBytes(); //문자열을 바이트 배열고 변경
System.out.println(" 문자열 을 바이트 배열로 변경 : "+bTest);
String strImsi = new String(bTest); //바이트 배열을 문자열로 변경
System.out.println(" 바이트배열 을 문자열로 변경 : "+strImsi);
}
}
//결과는 :
// 문자열 을 바이트 배열로 변경 : [B@15db9742
// 바이트배열 을 문자열로 변경 : 테스트할 문자열 입니다.
문자열을 네트워크로 전달할 경우에는 byte []로 변경해서 보냅니다.
그때 사용하는 String클래스의 getBytes() 메서드입니다.
반대인 경우도 위의 예제처럼 해주면 됩니다.
또 특정 코드로 인코딩, 디코딩해야 경우에도 사용 가능합니다.
아래의 예제도 복붙 하여 실행해 봅니다.
import java.io.UnsupportedEncodingException;
public class Sample {
public static void main(String[] args) {
///////////////// getBytes() 인코딩 디코딩예제
String strTest = "테스트할 문자열 입니다.";
byte[] bTest;
try {
bTest = strTest.getBytes("EUC-KR"); // EUC-KR로 인코딩 된다.
// 문자열을 바이트 배열고 변경
System.out.println(" 문자열 을 바이트 배열로 변경 : " + bTest);
String strImsi = new String(bTest,"EUC-KR"); // 바이트 배열을 문자열로 변경 디코딩도 함께
System.out.println(" 바이트배열 을 문자열로 변경 : " + strImsi);
} catch (UnsupportedEncodingException e) {
// 인코딩,디코딩 시에는 반드시 예외 처리 합시다.
e.printStackTrace();
}
}
}
//결과는 :
// 문자열 을 바이트 배열로 변경 : [B@15db9742
// 바이트배열 을 문자열로 변경 : 테스트할 문자열 입니다.
인코딩 , 디코딩의 결과로 길이가 달라질 수 있음을 알고 숙지해야 합니다.
전송 시 데이터의 길이를 잘못 정하면 잘려서 잘 전달돼 않을 수 있습니다.
네트워크 프로그램 시에는 필수 사항인 만큼 중요한 메서드입니다.
아래는 실전 코드입니다.
// 서버로 부터 받은 메세지를 분석해서 이벤트를 처리하는곳
byte[] byteBuff = new byte[9999];
try{
nRLen = is.read(byteBuff); //네트워크로 부터 서버에서 오는 데이터를 읽어옴
}catch(Exception e) {
//System.out.printf("SvrRead--88 [%s]\n",e.getLocalizedMessage());
}
strRcvMsg = new String(byteBuff, 0, nRLen);//strRcvMsg에 문자로 변환해서 파일내용을 넣음
//System.out.printf("SvrRead--[%s]\n를 받았습니다..\n",strRcvMsg);
//잘못 만든 코드 임. 어떠한 경우에도 실행이 되지 않는다.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
if (nRLen<0) {
//System.out.println("SvrRead-- 파일을 만들었습니다. 이제 등록해 주세요");
}
else {
//System.out.println("SvrRead--정보 파일을 받았습니다.");
//System.out.printf("SvrRead--서버로 부터 받은 메세지길이:[%d]\n내용:\n[%s]\n",nRLen,strRcvMsg);
//System.out.printf("SvrRead--서버(%s:%d) 연결 정상 종료 됨.\n", strSvrIP, nSvrPort);
}
끝.
728x90
반응형
'자바' 카테고리의 다른 글
자바 문자열 에서 역슬래쉬 (특수문자) [북붙따라하기]1 (0) | 2020.12.29 |
---|---|
자바 문자열에서 문자열 검색 String . indexOf() , lastIndexOf() [북붙따라하기] (0) | 2020.12.29 |
자바 문자열 String 알파벳 대, 소 문자로 변경 [북붙따라하기] (0) | 2020.12.28 |
자바 문자열의 길이 String.length() 배열.length [북붙따라하기] (0) | 2020.12.28 |
자바 equals () [북붙따라하기] (0) | 2020.12.28 |
댓글