java中整形變量與字節數組的轉換


  一直搞不清楚整形變量與字節數組的轉換,看過各位網友的解釋,現寫下此隨筆:

  • 整形變量轉換成字節數組  

    對於int類型變量a,將其轉換為字節數組b,方法如下:      

        int a = 100;
        byte[] b = byte[4];
        
        b[3] = (byte)(a & 0xff);
        b[2] = (byte)(a>>8 & 0xff);
        b[1] = (byte)(a>>16 & 0xff);
        b[0] = (byte)(a>>24 & 0xff);
        
  • 字節數組轉換成整形變量

    將剛才得到的字節數組b轉換成整形變量a,

int a = 0;
for(int i =0; i< b.length; i++){
      a += (b[i]&0xff) << (24-8*i);
}
return a;

  java里對於byte變量,假如操作中有int操作數,默認會將byte隱式轉換為int變量,而轉換成的int變量高24位全部為1,在將byte數組轉換為int變量的時候,假如直接用移位操作就會有麻煩,因為高位都是ffffff,所以需將隱式轉換生成的ffffff消掉。因此,將每個字節和0xff相與,然后再移位,最后把各步產生的結果相加即可得到原始的int變量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM