gpt4 book ai didi

java - 如何改进这个java代码 - 将字节数组转换为int

转载 作者:行者123 更新时间:2023-12-01 06:22:51 26 4
gpt4 key购买 nike

我有从 BLE 设备以字节数组(小端)返回的数据,并且能够让它在下面的代码中工作。不过,我很好奇是否有一种方法可以以更简洁的方式编写此代码:

int val = (Integer.parseInt(String.format("%02x", data[3]), 16) << 24) |    
(Integer.parseInt(String.format("%02x", data[2]), 16) << 16 ) |
(Integer.parseInt(String.format("%02x", data[1]), 16) << 8) |
(Integer.parseInt(String.format("%02x", data[0]), 16)) << 0;

这里返回的数据以十六进制打印:

data[0] = 0
data[1] = 0
data[2] = 8
data[3] = 9f

最终的 int 值应为 2207。

最佳答案

假设您的字节数组包含超过 4 个字节并且由打包的二进制数据组成,那么使用 ByteBuffer 是有意义的,它是为此类事情而设计的。

ByteBuffer buf = ByteBuffer.wrap(data)
buf.order(ByteOrder.LITTLE_ENDIAN);
int val = buf.getInt(); // read 4 bytes
int val2 = but.getShort(); // read 2
// ... more reads

如果包装缓冲区没有离开本地范围,那么转义分析就会启动,并基本上使其成为一个免费的抽象。

关于java - 如何改进这个java代码 - 将字节数组转换为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com