int与byte[]之间进行转换

如何将int与byte[]之间转换;

int类型在内存中占4个字节,采用补码方式存储,而一个byte占一个字节。下面有两种方法进行转换:

package cn.fh.vertxboot.utils;

/**
 * @description: int与Byte数组转换
 **/
public class ByteUtils {

    /*
    int转byte[]
    *将int数值转换为占四个字节的byte数组,int低位在前,高位在后
    * */
    public static byte[] intToBytes(int value){
        byte[] bytes = new byte[4];
        for (int i = 0; i < bytes.length; i++){
            int n = bytes.length - 1 -i;
            bytes[4 - i - 1] = (byte)((value>>8*n));
        }
        return bytes;
    }


    /*
    *byte[]转int
    * 适用于低位在前高位在后
    * */
    public static int byteToInt(byte[] src, int offset){
        int value;
        value = (int) ((src[offset] & 0xFF)
                | ((src[offset+1] & 0xFF)<<8)
                | ((src[offset+2] & 0xFF)<<16)
                | ((src[offset+3] & 0xFF)<<24));
        return value;
    }

     /*
    *int转byte[]
    *将int数值转换为占四个字节的byte数组,int高位在前低位在后
    * */
    public static byte[] intToBytes2(int value) {
        byte[] bytes = new byte[4];
        for (int i = 0; i < bytes.length; i++){
            int n = bytes.length - 1 -i;
            bytes[i] = (byte)((value>>8*n));
        }
        return bytes;
    }

    /**
    byte[]转int,高位在前低位在后
     */

    public static int byteToInt2(byte[] src, int offset) {
        int value;
        value = (int) ( ((src[offset] & 0xFF)<<24)
                |((src[offset+1] & 0xFF)<<16)
                |((src[offset+2] & 0xFF)<<8)
                |(src[offset+3] & 0xFF));
        return value;
    }

    public static void main(String[] args) {
        System.out.println("int转byte[]低位在钱高位在后");
        byte[] bytes = intToBytes(1999);
        for (int n = 0; n < bytes.length; n++){
            System.out.println(bytes[n]);
        }
        System.out.println("byte[]转int地位在前高位在后");
        int value = byteToInt(bytes,0);
        System.out.println(value);

        System.out.println("----------------------------");

        System.out.println("byte[]转int地位在前高位在后");
        byte[] bytes2 = intToBytes2(1999);
        for (int n = 0; n < bytes2.length; n++){
            System.out.println(bytes[n]);
        }
        System.out.println("byte[]转int地位在前高位在后");
        int value2 = byteToInt2(bytes2,0);
        System.out.println(value2);
    }
}

结果如下:
!](https://img-blog.csdnimg.cn/20200912142557250.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3OTA5MTQx,size_16,color_FFFFFF,t_70#pic_center)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值