-1

我知道 Javabyte范围是 -128 到 127,但 C++BYTEunsigned char(0 到 255。)

我想将 C++ 函数转换为 Java,在 C++ 中我有一个LPBYTE(它是指向BYTE数组的指针。)我尝试使用byte数组而不是LPBYTEC++ 函数,但我的 Java 函数仍然无法正常工作。

我的 C++ 函数适用于 BMP 文件,它的算法是自定义运行长度编码。在将其转换为 Java 时,我使用 aBufferedImage并将其内容作为byte[]. 我猜 Java 函数由于类型不匹配而无法正常工作。

我应该在 Java 中使用哪种类型?

4

3 回答 3

6

在Java中,您可以使用纯文本并根据需要byte转换为intb & 0xFF

您遇到的问题是Java 不支持指针,并且您无法将指向字节的指针传递给 Java。最接近的等价物是byte[]

如果您只进行 RLE 编码,则字节的实际值并不重要,因此它们是有符号还是无符号都无关紧要。如果您正在解码 BMP 文件,您可以根据需要使用上述掩码。

在读取/写入字节数组时,常见的解决方案是使用 ByteBuffer。这支持以小端或大端顺序编写较长的类型shortint您无需提前知道确切的长度。

于 2012-10-31T13:39:50.967 回答
1

Java 没有无符号类型(除此之外 char是 16 位)。因此,您别无选择,只能选择byte重写您的代码,使其适用于有符号整数。如果您需要这篇文章的帮助,请查看代码

于 2012-10-31T13:34:23.813 回答
1

Java 中没有无符号字节类型。你可以short改用。这可以表示从 0 到 255 的所有值,甚至更多。

于 2012-10-31T13:35:29.940 回答