java int byte互轉詳解


 

package com.cc8w.test;

public class TestInt2char {
    public static void main(String[] args) {
        int a=129;  
        //                  第一組       第二組     第三組    第四組  
        //2的二進制表示完整為 "[00000000][00000000][00000000][00000010]"[]括號實際沒有,為了看起來清楚加的  
        byte[] b=new byte[4];  
        //>>表示右移,如果該數為正,則高位補0,若為負數,則高位補1; 
        //向右移位運算,移動24位后,高8位,被移動到低8位上,二、三、四組都會被丟棄    
        b[0]=(byte) (a>>24);  
        //向右移動16位,高16位到低16位地方,第三、四組會被舍棄,至於&0xff這里不容易看出來,b[3]那一行能看出來  
        b[1]=(byte) ((a>>16)&0xff);  
        //移動8位第四組會被丟棄,結果還是0  
        b[2]=(byte) ((a>>8)&0xff);  
        //不移動直接進行與(&)運算,0xff的二進制是第四位為8個1 其他是0的數,作用就是排除不想要的位  
        //這里來個例子 [00000000][00000110][00000100][00000010]假如有這么個二進制的數字  
        //如果你想取到[00000100]字節的值 , 先對其向右移動8位變為  
        //[00000000][00000000][00000110][00000100] 
        //然后和0xff與運算,0xff二進制[00000000][00000000][00000000][11111111]  
        //與運算后的結果就為[00000000][00000000][00000000][00000100]  
        //這樣需要的字節就拿到了  
        
        //0xff十六進制是0x000000ff的簡寫(十六進制的2字符 可以代表一個字節[8位],上面把00 00 00 ff寫成ff)
     //半個字節(即4位)可以表示十六進制的一個字符(0~f),即:
十六進制的字符占用4位

        b[3]=(byte) (a&0xff);  
        for (byte c : b) {  
            System.out.print(Integer.toBinaryString(c&0xff)+" ");  
        }  
        System.out.println();  
        //把字節轉回Int和上面顛倒下,就不多說了。  
        int i=0;  
        i+=((b[0]&0xff)<<24);  
        i+=((b[1]&0xff)<<16);  
        i+=((b[2]&0xff)<<8);  
        i+=((b[3]&0xff));  
        System.out.println(i); 
        
    }
    
    
}

 

 

下面封裝成方法

 

一、Int2Byte

byte[] bytes = new byte[4];
for (int i = 0; i < 4; i++) {
    bytes[i] = (byte)(integer >>> (i * 8));
}

二、 Byte2Int

int i= (rno[0]<<24)&0xff000000|
       (rno[1]<<16)&0x00ff0000|
       (rno[2]<< 8)&0x0000ff00|
       (rno[3]<< 0)&0x000000ff;

int x = ((b[0] & 0xFF) << 24) | ((b[1] & 0xFF) << 16) |
        ((b[2] & 0xFF) <<  8) | ((b[3] & 0xFF) <<  0);

 

 

>>>    :     無符號右移,忽略符號位,空位都以0補齊

 https://www.cnblogs.com/fps2tao/p/13361785.html

 

 

轉 : https://www.iteye.com/blog/name327-1742945

https://www.cnblogs.com/helloz/p/10161424.html

 


免責聲明!

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



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