xiaoyaoyou1212 / BLE

✨Android BLE基础操作框架,基于回调,操作简单。包含扫描、多连接、广播包解析、服务读写及通知等功能。
http://www.huwei.tech/
Apache License 2.0
1.38k stars 364 forks source link

高低位转换方法 #51

Closed zhang40bu closed 6 years ago

zhang40bu commented 6 years ago
 /**
 *   蓝牙传输 16进制 高低位 读数的 转换
 * @param bb 从蓝牙拿到的 16进制的 byte数值
 * @param index 从哪一位开始截取,因为蓝牙一条有好几段数据
 * @param cont  截取的长度 (1不用截,是偶数位) 其实就是 1 2 4 8 。如果是1  直接用buffer 或转String 截取
 * @param big  如果高位在前 big 给一个true,如果地位在前,big给false
 * @return   因为考虑到 有点数据比较长,所以用 long类型,int也可以用long
 *  如果是要 String 的 类型 直接用 new String(byte[] by)就可以完成
 */

public static long getLong(byte[] bb, int index, int cont , boolean big) { long lg = 0; //TODO 高位在前 用这个转换 if (big) { // 高位在前 用这个这个 转换

        switch (cont) {
            case 2:
                lg = ((((long) bb[index + 0] & 0xff) << 8)
                        | (((long) bb[index + 1] & 0xff) << 0));
                break;

            case 4:
                lg = ((((long) bb[index + 0] & 0xff) << 24)
                        | (((long) bb[index + 1] & 0xff) << 16)
                        | (((long) bb[index + 2] & 0xff) << 8)
                        | (((long) bb[index + 3] & 0xff) << 0));
                break;

            case 8:
                lg = ((((long) bb[index + 0] & 0xff) << 56)
                        | (((long) bb[index + 1] & 0xff) << 48)
                        | (((long) bb[index + 2] & 0xff) << 40)
                        | (((long) bb[index + 3] & 0xff) << 32)
                        | (((long) bb[index + 4] & 0xff) << 24)
                        | (((long) bb[index + 5] & 0xff) << 16)
                        | (((long) bb[index + 6] & 0xff) << 8)
                        | (((long) bb[index + 7] & 0xff) << 0));
                break;

        }

        return lg;

    } else {
        //  TODO  地位在前用这个。 (我们的 嵌入式给的都是地位在前)
        switch (cont) {
            case 2:
                lg = ((((long) bb[index + 1] & 0xff) << 8)
                        | (((long) bb[index + 0] & 0xff) << 0));
                break;

            case 4:
                lg = ((((long) bb[index + 3] & 0xff) << 24)
                        | (((long) bb[index + 2] & 0xff) << 16)
                        | (((long) bb[index + 1] & 0xff) << 8)
                        | (((long) bb[index + 0] & 0xff) << 0));
                break;

            case 8:
                lg = ((((long) bb[index + 7] & 0xff) << 56)
                        | (((long) bb[index + 6] & 0xff) << 48)
                        | (((long) bb[index + 5] & 0xff) << 40)
                        | (((long) bb[index + 4] & 0xff) << 32)
                        | (((long) bb[index + 3] & 0xff) << 24)
                        | (((long) bb[index + 2] & 0xff) << 16)
                        | (((long) bb[index + 1] & 0xff) << 8)
                        | (((long) bb[index + 0] & 0xff) << 0));
                break;

        }

        return lg;

    }
xiaoyaoyou1212 commented 6 years ago

@zhang40bu 这个有添加的