java字节与c ++ BYTE

H-B*_*ami -1 c++ java image-processing run-length-encoding

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

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

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

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

Pet*_*rey 6

在Java中,您可以使用plain byteint根据需要转换为b & 0xFF

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

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

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