gpt4 book ai didi

java:将字节数组byte [1000]转换为数组int [500]的最快方法

转载 作者:行者123 更新时间:2023-12-03 19:04:45 28 4
gpt4 key购买 nike

目标是将每对字节转换为单个无符号 16 位整数。在 C 中,我会定义一个 array[500] 的 16 位 unsinged int 指针并将其指向字节数组,但在 java 中我不知道这样的捷径。我知道在 Java 中除了 char 之外没有 16 位数据类型,但这不是问题。我们只需要将每两个连续的两个字节复制到一个整数数组的单个 int 中。因此整数数组包含 0 到 65535 (2^16-1) 范围内的 int 值。

最佳答案

您可以使用 ByteBuffer 来避免移位和屏蔽,这些您经常会出错。 (也有签名与未签名)

ByteBuffer bb = ByteBuffer.wrap(bytes);
bb.order(ByteOrder.BIG_ENDIAN); // or LITTLE_ENDIAN
short[] shorts = new short[bytes.length/2];
for (int i=0; i<shorts.length; i++)
shorts[i] = bb.getShort();

注意 - 如果你真的想要一个“unsigned short”,java 中没有这样的东西,所以你的数组必须是整数。您将使用

for (int i=0; i<intArray.length; i++) {
short s = bb.getShort();
intArray[i] = s & 0xFFFF; // mask off all the high order bits
}

关于java:将字节数组byte [1000]转换为数组int [500]的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931744/

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