2023-05-19 java byte转int ,Byte.toUnsignedInt(b);int 转 byte (i & 0xFF);Integer.toHexString()int打印十六进制

一、 java 中byte 和int 等都是有符号的,java byte转int 会有两种情况。

       1.1 带符号转换,保持数值不变。

            bytedata = 0xFF(即数值为-1),int i = bytedata,则转化为int后,i为0xFFFFFFFF,数值仍为-1。

       1.2 无符号转换,保持最低字节中各个位不变,3个高字节全部用0填充。

           bytedata = 0xFF (即数值为-1),int i = bytedata & 0xFF,则转化为int后,i为0x000000FF,数值为0xFF。

           无符号转换可以调用 Byte.toUnsignedInt(b) Byte类里面的toUnsignedInt 函数进行转换,实际上是调用((int) x) & 0xff。

    public static int toUnsignedInt(byte x) {
        return ((int) x) & 0xff;
    }

       1.3  测试代码

public class Main {
	public static void main(String[] args) {
	    byte data[] =  {0x05,0x12,(byte)0xf8,0x78};
	    int i ;
	    System.out.println("***********one***********");
	    for(int n=0;n < data.length;n++)
	    {
	        i = data[n];
	        System.out.println("i"+"["+n+"]="+i + " 0x" + Integer.toHexString(data[n])+" 0x"+Integer.toHexString(i));
	    }
	    
	    System.out.println("***********two***********");
	    
	    for(int n=0;n < data.length;n++)
	    {
	        i = data[n] & 0xFF;
	         System.out.println("i"+"["+n+"]="+i + " 0x" + Integer.toHexString(data[n])+" 0x"+Integer.toHexString(i));

	    }
	    
	    System.out.println("***********three***********");
	    
	    for(int n=0;n < data.length;n++)
	    {
	        i =  Byte.toUnsignedInt(data[n]);
	        System.out.println("i"+"["+n+"]="+i + " 0x" + Integer.toHexString(data[n])+" 0x"+Integer.toHexString(i));

	    }
	    
	    System.out.println("int size:"+Integer.SIZE);
	}
}
标准输出:
***********one***********
i[0]=5 0x5 0x5
i[1]=18 0x12 0x12
i[2]=-8 0xfffffff8 0xfffffff8
i[3]=120 0x78 0x78
***********two***********
i[0]=5 0x5 0x5
i[1]=18 0x12 0x12
i[2]=248 0xfffffff8 0xf8
i[3]=120 0x78 0x78
***********three***********
i[0]=5 0x5 0x5
i[1]=18 0x12 0x12
i[2]=248 0xfffffff8 0xf8
i[3]=120 0x78 0x78
int size:32

二、int 转成 byte,实例测试;

public class Main {
	public static void main(String[] args) {

	    int i =0x1234f6;
	    System.out.println("0x" + Integer.toHexString(i));
	    byte[] data = new byte[4];
        data[0] = (byte)((i >> 24) & 0xFF);
        data[1] = (byte)((i >> 16) & 0xFF);
        data[2] = (byte)((i >> 8) & 0xFF);
        data[3] = (byte)(i & 0xFF);
        
        for(int n = 0;n < data.length;n++){
            System.out.println(n +":"+ data[n]);
        }
	    
	    System.out.println("int size:"+Integer.SIZE);
	}
}
标准输出:
0x1234f6
0:0
1:18
2:52
3:-10
int size:32

三、参考文章

Java中byte转int的方法_java byte转int_kingzone_2008的博客-CSDN博客

Java byte转换为int_java byte转int-CSDN博客

Java中int和byte的互相转换_java int转byte_梅开二度%的博客-CSDN博客

java 中,将Int 或者 byte 数据用二进制或者16进制打印出来_java 打印16进制_云夏之家)的博客-CSDN博客

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值