bytes[0] = (byte) (data & 0xff);这个语句什么意思
答案:2 悬赏:40 手机版
解决时间 2021-11-12 14:55
- 提问者网友:沦陷
- 2021-11-11 14:42
bytes[0] = (byte) (data & 0xff);这个语句什么意思
最佳答案
- 五星知识达人网友:舊物识亽
- 2021-11-11 15:26
bytes[0] = (byte) (data & 0xff):变量data与 0xff进行按位与运算(这里就是将高8位置0),然后强制转换成byte类型,赋值给byte数组的元素byte[0]
bytes[1] = (byte) ((data & 0xff00) >> 8):变量data与 0xff进行按位与运算(这里就是将低8位置0),然后将结果右移8位(高位补0),然后强制转换成byte类型,赋值给byte数组的元素byte[1]追问int类型的500和215怎么强制转换成byte类型,需要怎么用追答java里面int是32位的,byte是8位的。int类型的data进行data & 0xff运算后还是int类型的,强制转换成byte后,就保留其低8位。
500=0x01f4,(byte)500&0xff=0xf4=-12,结果是以补码表示的,最高位是符号位。追问那int类型215与235的转换呢追答int data=215=0xd7,(byte)(0xd7 &0xff)=-41
int data=235=0xeb,(byte)(0xeb &0xff)=-21追问怎么才能能让它正确显示byte类型的215,235 而不产生溢出
bytes[1] = (byte) ((data & 0xff00) >> 8):变量data与 0xff进行按位与运算(这里就是将低8位置0),然后将结果右移8位(高位补0),然后强制转换成byte类型,赋值给byte数组的元素byte[1]追问int类型的500和215怎么强制转换成byte类型,需要怎么用追答java里面int是32位的,byte是8位的。int类型的data进行data & 0xff运算后还是int类型的,强制转换成byte后,就保留其低8位。
500=0x01f4,(byte)500&0xff=0xf4=-12,结果是以补码表示的,最高位是符号位。追问那int类型215与235的转换呢追答int data=215=0xd7,(byte)(0xd7 &0xff)=-41
int data=235=0xeb,(byte)(0xeb &0xff)=-21追问怎么才能能让它正确显示byte类型的215,235 而不产生溢出
全部回答
- 1楼网友:不如潦草
- 2021-11-11 15:46
取data的高8位
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯