gpt4 book ai didi

java - 将 4 个字节组合成整数

转载 作者:行者123 更新时间:2023-11-30 08:55:10 26 4
gpt4 key购买 nike

我有一个名为 contents 的字节数组,我想从中读取字节、短整型和整数。

为此,我单独读取字节并通过移位组合它们。

public byte getByteValue(int fileOffset)
{
return contents[fileOffset];
}

public short getShortValue(int fileOffset)
{
short shortValue;

shortValue = getByteValue(fileOffset);
shortValue = (short) (shortValue * 256 + getByteValue(fileOffset + 1));

return shortValue;
}

public int getIntegerValue(int fileOffset)
{
int integerValue;

integerValue = getShortValue(fileOffset);
integerValue = integerValue * 256 + getByteValue(fileOffset + 2);
integerValue = integerValue * 256 + getByteValue(fileOffset + 3);

return integerValue;
}

当它用于在十六进制编辑器中显示为 0x4455FF00 的整数值时,如 HxD ,但是 Java 方法返回 0x4454FF00。

奇怪的是,getShortValue() 对于 0x4455 和 getByteValue() 显然也是正确的。

为什么不同?什么地方出了错?我该如何解决?

最佳答案

请记住字节在 Java 中是有符号的(想想如果 getByteValue(fileOffset) 返回 -100 会发生什么)。

我建议您使用ByteBuffer 及其getIntgetShort 方法。

你的方法可以通过改变来修复

public byte getByteValue(int fileOffset)
{
return contents[fileOffset];
}

public int getByteValue(int fileOffset)
{
return contents[fileOffset] & 0xFF;
}

关于java - 将 4 个字节组合成整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29180032/

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