Closed zhang40bu closed 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; }
@zhang40bu 这个有添加的
public static long getLong(byte[] bb, int index, int cont , boolean big) { long lg = 0; //TODO 高位在前 用这个转换 if (big) { // 高位在前 用这个这个 转换