如何解决对不同大小的数据类型进行按位运算
我正在尝试将定义为admin
和p1
的两个字节连接起来以形成一个Int p2
,这是我想出的实现方式
pnum
但是一个测试用例失败,当其中一个数字为负数(即设置了MSB)时,它将转换为pnum = p1 << 8
pnum |= p2
,并且将MSB移至第32位而不是第8位,从而产生一个值不正确
连接这两个字节或在转换过程中保留字节的MSB的正确方法是什么?
解决方法
您可以在添加p2
位(也已屏蔽)之前将其屏蔽。
val pnum = p1 << 8 & 0xFF00 | p2 & 0xFF
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。