久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: java中byte數組與int,long,short,float,char之間的轉換 [打印本頁]

作者: wf18332700757    時間: 2018-6-21 23:04
標題: java中byte數組與int,long,short,float,char之間的轉換
Byte和int之間的轉換
/**
  *將32位的int值放到4字節的里
  * @param num
  * @return
  */
public static byte[] int2byteArray(int num) {
   byte[] result = new byte[4];
   result[0] = (byte)(num >>> 24);//取最高8位放到0下標
   result[1] = (byte)(num >>> 16);//取次高8為放到1下標
   result[2] = (byte)(num >>> 8); //取次低8位放到2下標
   result[3] = (byte)(num );      //取最低8位放到3下標
   return result;
}

/**
  * 將4字節的byte數組轉成一個int值
  * @param b
  * @return
  */
public static int byteArray2int(byte[] b){
    byte[] a = new byte[4];
    int i = a.length - 1,j = b.length - 1;
    for (; i >= 0; i--,j--) {//從b的尾部(即int值的低位)開始copy數據
        if(j >= 0)
            a[i] = b[j];
        else
            a[i] = 0;//如果b.length不足4,則將高位補0
  }
    int v0 = (a[0] & 0xff) << 24;//&0xff將byte值無差異轉成int,避免Java自動類型提升后,會保留高位的符號位
    int v1 = (a[1] & 0xff) << 16;
    int v2 = (a[2] & 0xff) << 8;
    int v3 = (a[3] & 0xff) ;
    return v0 + v1 + v2 + v3;
}
short和byte的互轉

/**
  * 轉換short為byte
  *
  * @param b
  * @param s 需要轉換的short
  * @param index
  */
public static void putShort(byte b[], short s, int index) {
     b[index + 1] = (byte) (s >> 8);
     b[index + 0] = (byte) (s >> 0);
}

/**
  * 通過byte數組取到short
  *
  * @param b
  * @param index 第幾位開始取
  * @return
  */
public static short getShort(byte[] b, int index) {
      return (short) (((b[index + 1] << 8) | b[index + 0] & 0xff));
}
byte和char類型的轉換

/**
  * 字符到字節轉換
  *
  * @param ch
  * @return
  */
public static void putChar(byte[] bb, char ch, int index) {
        int temp = (int) ch;
        // byte[] b = new byte[2];
        for (int i = 0; i < 2; i ++ ) {
             // 將最高位保存在最低位
            bb[index + i] = new Integer(temp & 0xff).byteValue();
            temp = temp >> 8; // 向右移8位
        }
}

/**
  * 字節到字符轉換
  *
  * @param b
  * @return
  */
public static char getChar(byte[] b, int index) {
        int s = 0;
        if (b[index + 1] > 0)
            s += b[index + 1];
        else
            s += 256 + b[index + 0];
        s *= 256;
        if (b[index + 0] > 0)
            s += b[index + 1];
        else
            s += 256 + b[index + 0];
        char ch = (char) s;
        return ch;
}
byte和float的轉換

/**
  * float轉換byte
  *
  * @param bb
  * @param x
  * @param index
  */
public static void putFloat(byte[] bb, float x, int index) {
        // byte[] b = new byte[4];
        int l = Float.floatToIntBits(x);
        for (int i = 0; i < 4; i++) {
            bb[index + i] = new Integer(l).byteValue();
            l = l >> 8;
        }
}

/**
  * 通過byte數組取得float
  *
  * @param bb
  * @param index
  * @return
  */
public static float getFloat(byte[] b, int index) {
        int l;
        l = b[index + 0];
        l &= 0xff;
        l |= ((long) b[index + 1] << 8);
        l &= 0xffff;
        l |= ((long) b[index + 2] << 16);
        l &= 0xffffff;
        l |= ((long) b[index + 3] << 24);
        return Float.intBitsToFloat(l);
}
byte和double轉換

/**
  * double轉換byte
  *
  * @param bb
  * @param x
  * @param index
  */
public static void putDouble(byte[] bb, double x, int index) {
        // byte[] b = new byte[8];
        long l = Double.doubleToLongBits(x);
        for (int i = 0; i < 4; i++) {
            bb[index + i] = new Long(l).byteValue();
            l = l >> 8;
        }
}

/**
  * 通過byte數組取得float
  *
  * @param bb
  * @param index
  * @return
  */
public static double getDouble(byte[] b, int index) {
        long l;
        l = b[0];
        l &= 0xff;
        l |= ((long) b[1] << 8);
        l &= 0xffff;
        l |= ((long) b[2] << 16);
        l &= 0xffffff;
        l |= ((long) b[3] << 24);
        l &= 0xffffffffl;
        l |= ((long) b[4] << 32);
        l &= 0xffffffffffl;
        l |= ((long) b[5] << 40);
        l &= 0xffffffffffffl;
        l |= ((long) b[6] << 48);
        l &= 0xffffffffffffffl;
        l |= ((long) b[7] << 56);
        return Double.longBitsToDouble(l);
    }
}






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产色片在线 | 日本亚洲精品成人欧美一区 | 欧美aaa级 | 91精品久久 | 黄色一级特级片 | 欧洲性生活视频 | 精品美女视频在线观看免费软件 | 看一级毛片视频 | 最近日韩中文字幕 | av一级久久| 搞av.com | 免费视频一区二区 | 日日干天天操 | 黑人精品欧美一区二区蜜桃 | 欧美精品一区二区三区在线四季 | 亚洲影音先锋 | 很很干很很日 | 精品国产aⅴ | 少妇特黄a一区二区三区88av | h视频免费在线观看 | 日韩国产一区二区三区 | 日日日操 | 亚洲午夜网 | 久久国产美女视频 | 日韩亚洲视频在线 | 欧美一级全黄 | 狠狠天天 | 精品欧美乱码久久久久久1区2区 | 国产免费拔擦拔擦8x高清 | www.国产精| 一本色道久久综合亚洲精品高清 | 久久99精品久久久久久 | 在线看片国产 | a在线视频| 亚洲精品久久久久久久久久久久久 | 国产综合精品 | 国产精品一区二区不卡 | 九九导航| 超碰免费观看 | 午夜手机在线视频 | 亚洲不卡在线观看 |