Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

맨땅에 코딩

자바 16진수 문자 출력할때 ffff 출력 현상 + 쉬프트연산 및 계산 본문

앱 개발/Java

자바 16진수 문자 출력할때 ffff 출력 현상 + 쉬프트연산 및 계산

맨땅 2021. 12. 22. 11:37

목차

    반응형

    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 내에서 작성해줬습니다.

    위 코드 결과값

     

    반응형