java底层运算

1、求助,大神,下面代码是什么意思啊,遇到位运算就懵逼。。

2、这个问题是在反编译安卓apk遇到的,最近也是在读前辈的代码,解决历史遗留bug(=_=)。解析AndroidManifest.xml文件,需要将文件中的二进制解析出来,还原可读的xml文件。

    private static final int getUTF8Length(int[] array, int offset) {
        int len;
        int value = array[offset/4];
        if ((offset%4)/2!=0) {
            value = (value >> 16);
        }
        int hVal = value&0xFF;
        int lVal = value&0xFF00;
        if((hVal&0x80) != 0) {
            len = ((hVal&0x7F)<<8) | lVal;
        } else {
            len = hVal;
        }
        return len;
    }

 

posted @ 2018-08-14 15:51  柳树人  阅读(69)  评论(0)    收藏  举报