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

형변환 기초 입니다. ㅜㅜ

0 추천
readBuf[1]='0'

textView1.setText(Integer.toString(readBuf[1], 16));

이렇게 해서 텍스트 박스에 숫자 0  이 표시 되게끔 해야되는데

자꾸 16진수 30이 표시됩니다.ㅡㅡ

 

어떻게 변환하죠?
로봇공학 (180 포인트) 님이 2013년 3월 13일 질문

3개의 답변

+2 추천
 
채택된 답변
우선 질문에 작성하신 코드는 결과가 30이 나오는것이 정상입니다.

 

이유는

0이라는 문자의 아스키 코드 값은 48 입니다. 이것을 Integer객체를 이용해서 문자열 변환을 하게되면

'0' 에해당하는 값은 48이므로 48을 문자열로 변환하게됩니다.

거기에 toString의 두번째 인자는 진법에 대한 인자입니다. 거기에 16을 적으셨으니 16진수로 표현이 되는겁니다.

48에대한 16진수는 30입니다. 그래서 30이라는 문자가 표시가 되는것입니다.

 

가장 쉽게 변환하는 방법은 readBuf[1]+"" 정도가 되겠지만

String 클래스의 valueOf라는 메소드를 이용해서 쉽게 문자로 변환이 가능합니다.

String.valueOf(readBuf[1]); 를 사용해보세요.
이라슈 (8,770 포인트) 님이 2013년 3월 13일 답변
로봇공학님이 2013년 3월 13일 채택됨
담변 감사합니다.ㅜㅜ 근데 똑같이 48이 나옵니다..
이 방법이 맞는거 같긴한데.. 좀더 찾아보겠습니다^^
textView1.setText(String.valueOf(readBuf[1]));

하셔도 48이 나오시나요?
넵.ㅜㅜ  두가지방법 다 해봤습니다.. 흠..
textView1.setText(String.valueOf('0'));
이렇게 하면 제대로 나오는지 확인해보세요.
저게 0이 제대로 나온다면 다른부분에 값이 변형되는 부분이 있을거 같네요.
네 됩니다^^;;
형변환이 잘못된거 같은데..
 readBuf가 이렇게 설정되어 있습니다.


            byte[] readBuf = new byte[8];
                readBuf = (byte[]) msg.obj;                
                String readMessage = new String(readBuf, 0, 8);

textView1.setText(String.valueOf(readBuf[1]));

이렇게 하면 안되는건지^^:; 죄송해요 너무 초짜라,,
byte[]이군요. byte의 경우 그대로 해버리면 48이 나오게 되더군요.
다른방법은 readMessage처럼 byte[]을 문자열로 만들고
String.valueOf(readMessage.cahrAt(1)); 처럼
전체 문자열에서 원하는 위치의 값을 받아서 뿌려주는 방법이 있습니다.
textView1.setText(Byte.toString(readBuf[1]));
0 추천

Integer.toString(readBuf[1], 16)

뒤에 16이 바뀔진수라 그래요

16을 지워보세요

Integer.toString(readBuf[1])

bangbang (8,820 포인트) 님이 2013년 3월 13일 답변
그럼 10진수로 표시되네요.ㅜㅜ
질문을 잘못 이해했네요 죄송합니다 ㅎㅎ
0값을 넣어서 0값을 받으실려는줄 알았네요
0 추천

readBuf[1]='0' 를

readBuf[1]="0" 로

 

이유는 이라슈님 답변참고하시면 됩니다.

q1212 (26,020 포인트) 님이 2013년 3월 13일 답변
...