본문 바로가기
자바

자바 문자열, 바이트 배열 변환 String to byte[ ] ,byte[] to String [북붙따라하기]

by 세상 모든 것 들은 그 자신을 위해 존재한다. 2020. 12. 28.

. 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
반응형

댓글