(转载请注明原文地址:http://blog.csdn.net/vector_yi/article/details/44648997)
在Java
中,整数可以用byte
,short
,int
和long
等类型来表示,并不支持unsigned
类型。然而在很多情况下Java
也需要处理无符号类型,如翻译C/C++
代码,与C/C++
进行通讯等,这时就需要用Java
来实现uint8_t
,uint16_t
,uint32_t
等类型。
Java
实现unsigned
类型一般的思路为用更大的存储空间来保存无符号类型,以确保unsigned
最高位不会被Java
整型中的符号位所混淆。举个例子:
uint16_t
所占的存储空间为16位(即2字节),如果我们用Java
中占2字节的short
类型来保存uint16_t
,肯定会造成最高位的混淆。所以我们可以用占4字节的int
类型&0x0000ffff
来保存uint16_t
。
uintN_t
中的N表示该类型占用的存储空间为N位: