[英]java byte vs c++ BYTE
我知道Java byte
范围是-128到127,但是C ++ BYTE
是unsigned 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。 这支持以较小的字节序或较大的字节序顺序写入更长的类型,例如short
或int
,而您无需事先知道确切的长度。
Java没有无符号类型(除16位的char
之外)。 因此,您别无选择,选择byte
,然后重写您的代码,使其可用于带符号整数。 如果您需要有关此帖子的帮助, 请编写代码 。
Java中没有无符号字节类型。 您可以改用short
。 这可以代表0到255之间的所有值,以及更多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.