聊聊java基础,int值强制类型转换成byte

知识点:byte、short、char在表达式中会自动提升为int

之前做一个应用时,打印IP地址,因为是用4个byte存储的,所以打印的时候值范围是-128~127,考虑了下怎么快速转换成int值。然后今天抽空把整个完整的过程思考下,然后写下来。

首先int强制类型转换成byte,直接取低8位,这个大家可以自己试试,不管int值是多少,转化后的byte二进制与int的第八位二进制一样。所以如果int的第八位是1,转成byte就是负值,否则就是正值。

  • 如果int值范围为-128~127,int值和byte值一致。

  • 如果int值大于255或者小于-256,值肯定是还原不了,信息已经丢失一部分。

  • 如果int值大于127小于等于255,第八位是1,相应的byte是负值,使用int x = b&0xff,因为b在表达式里面会自动提升为int,所以会在高位补齐1,因为我们知道对应的int是正值,所以这时把高于8位的1全部换成0。

  • 如果int值小于-128大于等于-256,第八位是0,前面所有位都是1,相应的byte是正值,使用int x=b|0xffffff00,b在表达式中自动提升为int,所以高位补齐0,把第八位前面所有的0替换成1,就可以得到正确的值。

很多事情深追一下,还是有很多细节可以挖掘一下的。

最新文章

  1. 图解Netty之Pipeline、channel、Context之间的数据流向。
  2. 针对bootstrap内联单选框input与文字不能居中对齐的解决办法
  3. Greenplum测试环境部署
  4. js中操作数组的一些方法【转】
  5. node.js study: cluster
  6. 使用poi将word转换为html
  7. JAVA责任链设计模式
  8. BC 2015在百度之星程序设计大赛 - 预赛(1)(系列转换-二分法答案贪婪)
  9. 在.NET Core控制台应用程序中使用强类型配置
  10. JanaScript数据类型
  11. Eclipse中JavaSwing图形插件安装
  12. day 1——字典树练习
  13. LOJ #6041. 事情的相似度
  14. ArcGIS自定义工具箱-自增字段(可以设置初始值和步长)
  15. linux 的yum源
  16. Splay和LCT的复杂度分析
  17. P2258 子矩阵
  18. postman参数化的方法
  19. Unity创建或克隆对象 Instantiate()
  20. ios --跳转到支付宝

热门文章

  1. phoenix
  2. angular之$watch方法详解
  3. JQuery中关于浏览器兼容性的问题
  4. 如何用Python脚本从文件读取数据?
  5. PHP中public、protected、private权限修饰符
  6. netty4.x 传输文件
  7. SQL server学习(三)T-SQL编程、逻辑控制语句和安全模式
  8. 项目管理软件之争,禅道和JIRA大对比
  9. 在前端页面对easyui中的datagrid与jqgrid加载后的数据进行操作
  10. ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL&EF