转自: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中得不到全面支持”的论断!

最新文章

  1. Android Automotive开发之一《编译自己的SDK 》 // TOBEDONE
  2. tp5 model 的数据自动完成
  3. HTTP 错误 500.23 - Internal Server Error
  4. Javascript Window Location
  5. Centos下搭建ftp服务器
  6. JS 点击按钮后弹出遮罩层,有关闭按钮
  7. Scut 上线后遇到的问题
  8. BZOJ1677: [Usaco2005 Jan]Sumsets 求和
  9. 【剑指offer】数字数组中只出现一次(2)
  10. 数据库性能监测工具——SQL Server Profiler
  11. PHP命名空间的概念与使用
  12. Vue 组件的使用
  13. Linux中修改环境变量及生效方法(永久、临时)环境变量查看
  14. hdu5646数学构造+二分
  15. Centos 7 下 Corosync + Pacemaker + psc + HA-proxy 实现业务高可用
  16. Discrete Square Roots UVALive - 4270(拓展欧几里得)
  17. USACO 6.4 Electric Fences
  18. for 续8
  19. MySQL->导出/导入资料[20180521]
  20. CCF——门禁系统201412-1

热门文章

  1. redis设置key总结
  2. HTML5开发学习:本地存储Web Sql Database
  3. GitLab 安装(推荐)
  4. Unity 4.0 中的新动画系统——MecAnim
  5. 关于Mysql安装启动的若干问题解决
  6. sql ,内连接,外连接,自然连接等各种连接
  7. 状态压缩+矩阵乘法hdu-4332-Constructing Chimney
  8. 17、python对内存的使用
  9. Node.js Cheerio parser breaks UTF-8 encoding
  10. 三种方法教你如何用PHP模拟post提交数据