乐趣区

自定义协议之解析字节不得不说的操作

自定义协议 —– 字节不得不说的操作


一、得到高 4 位


 /**
  * 得到高 4 位
  */
 public static int getHeight4(byte data){return ((data & 0xf0) >> 4);
 }
 

二、得到低 4 位


 /**
  * 得到低四位
  */
 public static int getLow4(byte data){return (data & 0x0f);
 }

三、得到 byte 某一位 bit 值:


/**
  * 得到 byte 某一位 bit 值
  * @param b 字节
  * @param index 位置的下标 (从 0 开始)
  */
  public int getBit(byte b,int index) {int bit = (int)((b>>i) & 0x1);
     return bit;
  }     

四、获取多个连续的 bit 值


/**
  * 获取多个连续的 bit 值
  *
  * @param b 字节
  * @param start 开始的下标
  * @param len 结束的下标
  */
  public static int getBits(byte b, int start, int len) {return (b >> start) & (0xFF >> (8 - len));
  }

五、打印字节序(字节转 16 进制)


  /**
  * 字节转 16 进制.
  * @param bs 字节数组
  */
  private String bytesToHex(byte[] bs) {char[] chars = "0123456789ABCDEF".toCharArray();
    StringBuilder sb = new StringBuilder("");
    int bit;
    for (int i = 0; i < bs.length; i++) {bit = (bs[i] & 0x0f0) >> 4;
       sb.append(chars[bit]);
       bit = bs[i] & 0x0f;
       sb.append(chars[bit]);
       sb.append(' ');
    }
  }
退出移动版