繁体   English   中英

Java字节与C ++ BYTE

[英]java byte vs c++ BYTE

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

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

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

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

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

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

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

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

Java没有无符号类型(除16位的char之外)。 因此,您别无选择,选择byte ,然后重写您的代码,使其可用于带符号整数。 如果您需要有关此帖子的帮助, 请编写代码

Java中没有无符号字节类型。 您可以改用short 这可以代表0到255之间的所有值,以及更多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM