반응형
0x30, 0x31을 Integer.toHexString을 사용하여 출력하면 0x30이 그대로 나왔다.
그러나 0xC0 등의 수를 출력하면 앞에 'ffff'라는 값이 붙어서 나왔다.
비트 연산을 해주려는데 값이 변해버리니 연산 값도 변해버리는 이슈가 발생했습니다.
Integer.toHexString
Integer.toHexString
해결법
해당 byte크기만큼 0xff를 AND 연산해주면 된다!
1byte면 0xff
2byte면 0xffff
3byte면 0xffffff
...
적용 예시 (ffff값 처리 -> 쉬프트 연산 -> 연산)
[MainActivity.Java]
hh = (aa<<24);
Log.d("Simulators", "hh는 " + Integer.toHexString(hh & 0xffffffff));
int ee = (bb<<16);
Log.d("Simulators", "ee " + Integer.toHexString(ee & 0xffffff));
int ff = (cc<<8);
Log.d("Simulators", "ff " + Integer.toHexString(ff & 0xffff));
Log.d("Simulators", "dd " + Integer.toHexString(dd & 0xff));
pp = ((hh & 0xffffffff)+(ee & 0xffffff)+(ff & 0xffff)+(dd & 0xff));
Log.d("Simulators", "계산 결과(pp)는 " + Integer.toHexString(pp));
Log.d("Simulators", "pp " + pp);
oncreate 내에서 작성해줬습니다.

반응형
'앱 개발 > Java' 카테고리의 다른 글
[안드로이드] 레이아웃 배경색 어둡게 (0) | 2022.01.03 |
---|---|
[안드로이드] 권한 요청 팝업 (한번에 여러개 요청) (0) | 2022.01.03 |
안드로이드 DB 데이터 csv 파일로 추출 (0) | 2021.12.23 |
자바 비트 연산, 쉬프트 연산자 (0) | 2021.12.22 |
안드로이드 리스트뷰 아이템 정렬(내림차순) (0) | 2021.12.09 |