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

log를 보는데 byte값이 139가 -117로 나오는 현상

0 추천
byte readData = (byte) input.read();
logger.debug("kyh calculator readData : " +  readData );

통신에서 읽은 데이터 값을 

디버그로 보는소스인데요

분명 바이트로 보내는걸 바이트 값으로 저장해서 로그로 보는데

다른 값들은 90이라던가 91이라던가 81이라던가 제대로 다 양수정상값이 나오는데

139를 보내서 받으면

 

kyh calculator readData : -117

 

이런식으로 나오고

byte len = readData;
logger.debug("kyh calculator len : " + len);
if (len > 0 && len < MAX_BUF_SIZE)

len값이 0이하라 조건문을 통과를 못하네요

 

저는 로그값을 보는 디버그에서만 마이너스값이 나오는게 아닐까 했는데

조건문 통과못하는거 보니까 len이 0 이하라서 조건문 못들어가는거 보니 그런게 아니고

 

바이트값이 마이너스가 나오는게 되는건가요?

0~255까지 값이 아니었나요?

자료형 자체 범위가 0~255인데 어떻게 마이너스값으로 로그로 표현이 되며

byte len으로 자료형 지정까지 해서 받는데

마이너스 값이라 조건문을 통과 못하는지...

 

안드로이드 byte 자료형은 범위가 다른건가요? 왜 마이너스값이 나올수가 있는거죠?

뭐를 고쳐야 139를 제대로 볼수 있을까요?

 

그리고 안드로이드 저 로그값 볼 때요 (" 스트링" + 변수)로 하는데

변수는 int던 byte던 float이던 아무거나 넣으면 그거에 맞게 나와주는건지요? 아니면 int값으로만 나온다던가 하는건지요?

익명사용자 님이 2019년 5월 9일 질문

1개의 답변

0 추천

unsigned 형식의 값이 아니라 그렇습니다.

int len = readData&0xff;  같이 연산해서 사용하시던지, 

0보다 작을 때 255를 더 해 주셔야 합니다.

https://techlog.gurucat.net/156

익명사용자 님이 2019년 5월 9일 답변
...