返回信息流byte ant=0x88;
这好像也没溢出啊 eclipse提示can not convert from int to byte
这是一条镜像帖。来源:北邮人论坛 / java / #19446同步于 2011/7/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
这句有错吗
didotee
2011/7/20镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 wks 的大作中提到: 】
: 因为0x88 = 136 > 127,而byte的范围是[-128,127),所以,转换成byte会有损失。不幸的是Java竟然还没有无符号整数类型。
: --
0x88的最高位是1,不应该是个负数吗?-120的话没超过-128啊我算错了?
你学的太多了...
都混了...
【 在 didotee (didotee) 的大作中提到: 】
: 0x88的最高位是1,不应该是个负数吗?-120的话没超过-128啊我算错了?
0x88 是一个int ,它的符号位是0
下面这样可以得到你想要的 -120
byte b = (byte) 0x88;
System.out.println(b);
【 在 didotee (didotee) 的大作中提到: 】
: 0x88的最高位是1,不应该是个负数吗?-120的话没超过-128啊我算错了?
正解。
0x88首先是int型。所以值就是136,而不是-120。
Java没有“byte literal”,写出来的数字都是int型,加L就是long型。
【 在 ox 的大作中提到: 】
: 0x88 是一个int ,它的符号位是0
: 下面这样可以得到你想要的 -120
: byte b = (byte) 0x88;
: ...................
【 在 wks 的大作中提到: 】
: 正解。
: 0x88首先是int型。所以值就是136,而不是-120。
: Java没有“byte literal”,写出来的数字都是int型,加L就是long型。
: ...................
受教了!多谢!
我刚刚试了 0x88的确是int 本来是16进制的,可以能eclipse编译器判断成int的 值是136
int b = 0x88;
System.out.print(b); /这样得到的结果是 136
byte b = (byte)0x88;
System.out.print(b); /这样得到的结果是 -120
byte b = 0x88;
System.out.print(b); /这样编译错误 cannot convert from int to byte ,编译器默认把0x88看作int的,值136超过byte的上界127