안녕하세요.


sock통신을 구현중인데요.

서버로 부터 정해진 포맷으로 데이타를 받아서 처리하는 부분에서 아래와 같은 문제가 있어 질문 올립니다.


예를 들어 서버로 부터 받은 데이타가 

byte[] id = new byte[32];

라고 정의 되었을때, 실제 데이타 길이는 32 이하에거 가변적으로 오게 됩니다.

받은 데이타는 문자열로 변환하여 사용하게 되는데요.

아래와 같이 문자열로 변환 시킵니다.

String strid = new String(id);


문제는 여기서 발생을 하는데요, 서버로 부터 받은 데이타인 id값의 실데이타 이외에 값은 0으로 채워져 있게 됩니다.

이런상태로 위의 문자열 변화을 하게 되면 strid값의 실데이타 이외에 부분이 깨진 문자열의 모양으로 채워집니다.


예를들어 서버로 부터 아래와 같이 데이타를 받았을 경우 실데이타는 "abcde" 가 되고 나머지 영역은 0 값입니다.

id ===> [ 'a', 'b', 'c', 'd', 'e', 0, 0, 0, ... ]


문자열로 변환하면 abcde�������...   이런식으로 실데이타 뒷부분이 엄한 값으로 찍힙니다.

특이한건 디버깅모드로 값을 보면 "abcde"  로 보이지만 Log로 찍거나 저장하면 위에 처럼 나타나네요.


문자열로변환 했을때 0 값이 이전의 실제 데이타만 변환해 낼수 있는 방법이 있을까요?


수고하세요.