在java中将整数转换为字节

时间:2015-07-28 11:21:21

标签: java

参考Herbert Schildt的第7版“Java The Complete Reference”第79页。 作者说:“如果整数的值大于a的范围 字节,它将以模数(整数除法的余数除以)字节的范围“。

java中的字节范围是-128到127.因此,适合一个字节的最大值是128.如果为一个字节分配了一个整数值,如下所示:

int i = 257;
byte b;
b = (byte) i;

由于257越过127的范围,257%127 = 3应该存储在'b'中。 但我得到的输出为1而不是3。 我在理解这个概念时出了什么问题?

2 个答案:

答案 0 :(得分:8)

只需考虑数字的二进制表示:

257 is represented in binary as 00000000 00000000 00000001 00000001

当您将此32位int转换为8位byte时,您只保留最低的8位:

00000001

是1

答案 1 :(得分:2)

位为

257 = 00000000 000000000 00000001 00000001,字节仅由8位组成......

结果只存储了低8位,输出为1。