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

原文地址:https://www.cnblogs.com/fps2tao/p/13364487.html