自定義協議之解析字節不得不說的操做

自定義協議-----字節不得不說的操做


1、獲得高4位


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

2、獲得低4位


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

3、獲得byte某一位bit值:


/**
  * 獲得byte某一位bit值
  * @param b 字節
  * @param index 位置的下標(從0開始)
  */
  public int getBit(byte b,int index) {
     int bit = (int)((b>>i) & 0x1);
     return bit;
  }

4、獲取多個連續的bit值


/**
  * 獲取多個連續的bit值
  *
  * @param b 字節
  * @param start 開始的下標
  * @param len 結束的下標
  */
  public static int getBits(byte b, int start, int len) {
    return (b >> start) & (0xFF >> (8 - len));
  }

5、打印字節序(字節轉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(' ');
    }
  }
相關文章
相關標籤/搜索