java字节与c ++ BYTE

时间:2012-10-31 13:31:37

标签: java c++ image-processing run-length-encoding

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

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

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

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

3 个答案:

答案 0 :(得分:6)

在Java中,您可以使用普通byte并根据需要转换为int b & 0xFF

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

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

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

答案 1 :(得分:1)

Java没有无符号类型(除char之外是16位)。所以你别无选择,选择byte但重写代码,以便它可以使用有符号整数。如果您需要有关此的帮助,请发布代码

答案 2 :(得分:1)

Java中没有无符号字节类型。您可以使用short代替。这可以表示0到255之间的所有值,等等。