聊聊java基础,int值强制类型转换成byte
2024-09-12 15:48:01
聊聊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,就可以得到正确的值。
很多事情深追一下,还是有很多细节可以挖掘一下的。
最新文章
- 图解Netty之Pipeline、channel、Context之间的数据流向。
- 针对bootstrap内联单选框input与文字不能居中对齐的解决办法
- Greenplum测试环境部署
- js中操作数组的一些方法【转】
- node.js study: cluster
- 使用poi将word转换为html
- JAVA责任链设计模式
- BC 2015在百度之星程序设计大赛 - 预赛(1)(系列转换-二分法答案贪婪)
- 在.NET Core控制台应用程序中使用强类型配置
- JanaScript数据类型
- Eclipse中JavaSwing图形插件安装
- day 1——字典树练习
- LOJ #6041. 事情的相似度
- ArcGIS自定义工具箱-自增字段(可以设置初始值和步长)
- linux 的yum源
- Splay和LCT的复杂度分析
- P2258 子矩阵
- postman参数化的方法
- Unity创建或克隆对象 Instantiate()
- ios --跳转到支付宝