java int 4个字节_将4个字节转换为int

您应该将其放入这样的函数中:

public static int toInt(byte[] bytes, int offset) {

int ret = 0;

for (int i=0; i<4 && i+offset

ret <<= 8;

ret |= (int)bytes[i] & 0xFF;

}

return ret;

}

例:

byte[] bytes = new byte[]{-2, -4, -8, -16};

System.out.println(Integer.toBinaryString(toInt(bytes, 0)));

输出:

11111110111111001111100011110000

这样可以避免用完字节并正确处理负字节值。

我不知道执行此操作的标准功能。

要考虑的问题:

字节序:不同的CPU架构按不同的顺序放置构成int的字节。根据开始时字节数组的方式,您可能会为此担心。和

缓冲:如果您一次抓取1024个字节并在元素1022处开始一个序列,则在获得4个字节之前将到达缓冲区的末尾。最好使用某种形式的缓冲输入流来自动进行缓冲,这样您就可以readByte()重复使用而不必担心。

尾随缓冲区:输入的末尾可能是字节数不均(具体来说不是4的倍数),具体取决于源。但是,如果您创建的输入开头是“保证”(或至少是前提条件)的4的倍数,则可能无需担心。

为了进一步详细说明缓冲点,请考虑BufferedInputStream:

InputStream in = new BufferedInputStream(new FileInputStream(file), 1024);

现在,您有了一个InputStream可自动一次缓冲1024个字节的,处理起来不那么麻烦了。这样,您可以一次愉快地读取4个字节,而不必担心过多的I / O。

其次,您还可以使用DataInputStream:

InputStream in = new DataInputStream(new BufferedInputStream(

new FileInputStream(file), 1024));

byte b = in.readByte();

甚至:

int i = in.readInt();

完全不用担心构造int。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值