마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

String을 byte로 변환중에 데이터가 바뀌는데 어떻게 해야하나요?

0 추천
ncimage = (new String(payload, langCodeLen + 1, payload.length - langCodeLen - 1, textEncoding));
	Log.d("receive", "ncimage : " + ncimage);
	byte[] buffers = ncimage.getBytes();
	Log.d("receive", "ncimage : " + buffers);
	getncView.setImageBitmap(BitmapFactory.decodeByteArray(buffers, 0, buffers.length));

위와 같이 ncimage라는 String 변수에 값을 받아온걸 넣었습니다. (NFC를 통해 값을 받아왔습니다.)

그리고 그 값을 byte로 변환시킨뒤, setImageBitmap으로 ImageView에 보여주고 싶은데요.

위 와 같이 작성했을때에

Qmage stream read error!! required length = 12 bytes, but just read 11 bytes

이런 오류가 뜹니다...

그래서 맨 위 코드 처럼 Log.d 를 사용해서 중간에 어떤 값이 있는지 알아보았는데, 

ncimage : [B@22c7ce0e
ncimage : [B@c8c10f4

이렇게 뜨더라구요.

제가 잘 모르겠는 부분이 여긴데요. 

왜 여기서 첫번째로그의  값과 두번째로그의 값이 다른지, 그리고 한자리는 왜 빠져있는지 입니다....

개발 고수님들 제발 도와주세요...ㅠㅠ

sean111 (1,220 포인트) 님이 2015년 9월 16일 질문

1개의 답변

0 추천
 
채택된 답변
String으로 받으신거 자체가 잘 못 되었습니다.

0x00 데이터가 들어올 수 있는데, String에선 이걸 문자열 종료라고 생각하보니 그 값 뒤의 데이터를 처리 하지  못 합니다.

byte로 사용하시던지 base64 Encoding을 하여 String으로 가지고 있다가 decoding하여 사용하셔야 합니다.
익명사용자 님이 2015년 9월 16일 답변
sean111님이 2015년 9월 17일 채택됨
초보라서 encoding decoding에 대해서 잘 몰랐는데 인터넷 보고 공부해봤습니다.
좋은 정보 감사합니다.
인터넷을 보고 따라한 결과, encoding과 decoding이 잘 되어서 Log로 볼때 이젠 한자리도 안빠지고 값을 가져오게 되었습니다.
그런데도 아직 setImageBitmap을 했을때 같은 오류가 뜨고 있어서 문제네요...ㅠㅠ
제 생각엔 이것때문에 오류가 발생하는줄 알았는데 아니었나봅니다...
...