1

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


一、得到高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(' ');
    }
  }

smilesnake
298 声望4 粉丝

引用和评论

0 条评论