Java的byte数组和Integer、Long互转

本文介绍如何在Java中实现byte数组与int类型之间的相互转换。提供了两种byte数组转int的方法,一种利用ByteBuffer,另一种通过位操作实现;同时给出了int转byte数组的两种方式。

###byte[] -> int

int result = ByteBuffer.wrap(bytes).getInt();

或者:

    public static byte[] intToBytes(int i) {  
        byte[] targets = new byte[4];  
        targets[3] = (byte) (i & 0xFF);  
        targets[2] = (byte) (i >> 8 & 0xFF);  
        targets[1] = (byte) (i >> 16 & 0xFF);  
        targets[0] = (byte) (i >> 24 & 0xFF);  
        return targets;  
    }  

###int -> byte[]

byte[] bytes = ByteBuffer.allocate(4).putInt(1695609641).array();

  public static int bytesToInt(byte[] bytes, int off) {  
        int b0 = bytes[off] & 0xFF;  
        int b1 = bytes[off + 1] & 0xFF;  
        int b2 = bytes[off + 2] & 0xFF;  
        int b3 = bytes[off + 3] & 0xFF;  
        return (b0 << 24) | (b1 << 16) | (b2 << 8) | b3;  
    }  

   public static byte[] toByteArray(long value) {
        return ByteBuffer.allocate(Long.SIZE / Byte.SIZE).putLong(value).array();
    }

    public static long byteArrayToLong(byte[] bytes) {
        ByteBuffer buffer = ByteBuffer.allocate(8);
        buffer.put(bytes, 0, bytes.length);
        buffer.flip();
        return buffer.getLong();
    }
### 创建使用空 `byte` 数组Java 中,可以通过多种方式创建并初始化一个空的 `byte` 数组。以下是几种常见的方式: #### 使用默认初始值创建空 `byte` 数组 当声明一个新的 `byte` 数组而未指定任何元素时,默认情况下所有的字节都会被初始化为零 (`0`)。 ```java // 定义大小为10的空byte数组 byte[] emptyByteArray = new byte[10]; ``` 这段代码定义了一个名为 `emptyByteArray` 的变量来存储新的 `byte` 类型的一维数组对象,并指定了该数组有十个位置可以容纳 `byte` 值;由于没有给定具体的数值,在分配内存空间之后这些位置上的每一个都将自动设置成 `0`[^1]。 #### 动态创建具有特定长度的空 `byte` 数组 如果程序运行期间才知道所需的确切尺寸,则可以根据实际需求动态地构建相应规模的 `byte` 数组。 ```java long fileSizeInBytes; fileSizeInBytes = someFile.length(); if (fileSizeInBytes > Integer.MAX_VALUE) { throw new OutOfMemoryError("The file is too large."); } byte[] dynamicEmptyArray = new byte[(int) fileSizeInBytes]; ``` 这里展示了如何基于文件的实际大小来决定要创建多大容量的 `byte` 数组实例。需要注意的是,因为 Java数组的最大索引是由整数范围限定的,所以对于非常大的文件可能需要额外处理以防止溢出错误。 #### 初始化为空列表形式的 `byte` 数组 还可以采用花括号 `{}` 来表示没有任何成员项存在的 `byte` 数组。 ```java byte[] trulyEmptyArray = {}; ``` 这种方式简单明了,适用于那些确实不需要预先填充任何数据的情况下的场景下使用[^5]。 一旦有了这样的空 `byte` 数组后就可以像操作其他类型的数组一样对其进行读取、修改或者传递作为参数参与函数调用了。不过值得注意的是,尽管它们被称为“空”,实际上只是说里面还没有放入自定义的数据而已——每个元素都已经被赋予了默认值 `0`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值