(转)java 中unsigned类型的转换
转自:http://blog.sina.com.cn/s/blog_77bf45a90101dld9.html
在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned转换。
方案一:如果在Java中进行流(Stream)数据处理,可以用DataInputStream类对Stream中的数据以Unsigned读取。
Java在这方面提供了支持,可以用java.io.DataInputStream 类对象来完成对流内数据的Unsigned读取,该类提供了如下方法:
(1)int readUnsignedByte () //从流中读取一个0~255(0xFF)的单字节数据,并以int数据类型的数据返回。返回的数据相当于C/C++语言中所谓的“BYTE”。
(2)int readUnsignedShort () //从流中读取一个0~65535(0xFFFF)的双字节数据,并以int数据类型的数据返回。返回的数据相当于C/C++语言中所谓的“WORD”, 并且是以“低地址低字节”的方式返回的,所以程序员不需要额外的转换。
方案二:利用Java位运算符,完成Unsigned转换。
正常情况下,Java提供的数据类型是有符号signed类型的,可以通过位运算的方式得到它们相对应的无符号值,参见几个方法中的代码:
public int getUnsignedByte (byte data){ //将data字节型数据转换为0~255 (0xFF 即BYTE)。
return data&0x0FF ;
}
public int getUnsignedByte (short data){ //将data字节型数据转换为0~65535 (0xFFFF 即 WORD)。
return data&0x0FFFF ;
}
public long getUnsignedIntt (int data){ //将int数据转换为0~4294967295 (0xFFFFFFFF即DWORD)。
return data&0x0FFFFFFFF ;
}
灵活的运用这些技法,根本不存“二进制在Java中得不到全面支持”的论断!
相关文章
- JAVA中list,set,map与数组之间的转换详解
- Java-日期转换
- 关于Java你不知道的十件事
- 利用JSONObject将json 字符串转换为java bean对象
- java工作一年需要掌握的技术,成功收获美团,小米offer
- 黑马程序员:Java基础总结----GUI图形化界面
- java常用string inputStream转换
- [Java]排序算法>插入排序>【折半插入排序】(O(N*N)/稳定/N较大/无序/顺序存储)
- Java数据类型 及 转换原则
- java泛型中<?>和<T>有什么区别?
- java Date时间的各种转换方式和Mysql存时间类型字段的分析
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换
- Java:String和Date、Timestamp之间的转换
- java 执行redis的部分方法
- java下载文件代码示例
- java发送post请求,使用multipart/form-data的方式传递参数--《优化》
- Java 视频转换h265、h264、mkv、mp4
- java:基本数据类型和字符串String的转换
- 你想由C或Java向python转换吗?浅谈他们编程语法习惯的差别
- JAVA WEB 解决编码问题的filter
- 【我的Android进阶之旅】Android 7.0报异常:java.lang.SecurityException: COLUMN_LOCAL_FILENAME is deprecated;
- 【Mysql系列】jsqlparser学习-SQL转换为java类