JAVA byte类型到short、int和long的转换注意事项

java只支持有符号整数,所以当一个byte类型的整数转换为长精度整数类型时,高字节会填充符号位的值。如果该byte类型的整数表示一个无符号整数时,必须要将填充的高字节清零才能得到对应的值。否则如果最高位是1的话,就会得到一个负值。


    /** 
     * 该函数用于将一个byte数组的某个或某几个元素转换为int类型的整数。
     *  
     * @param buf 
     * @param offset
     * @param size 字节个数,取值范围:1-4.
     * @return int 
     * */  
    private static int getBigEndianInt(byte[] buf, int offset, int size) {
        int ret = 0;
        for (int i = 0; i < size; i++) {
            ret = ret << 8;
            ret |= buf[offset + i] & 0xFF;
        }
        return ret;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值