Int到Byte具有相同的值

时间:2015-06-13 14:02:44

标签: java int byte

我有和int和一个字节,我需要字节值与int相同的值,我发现的所有答案最终都是这样的:

int i = 234;
byte b = (byte) i;
System.out.println(b); // -22
int i2 = b & 0xFF;
System.out.println(i2); // 234

现在如果我的int等于234,我打印出来时需要我的字节值234,而不是-22,我理解为什么它打印出来-22但不是我需要的。

如果有人知道该怎么做,请帮助我。

2 个答案:

答案 0 :(得分:5)

你做不到。 byte只能存储-128127之间的数字。转换不可表示的整数时,必然会发生信息丢失。

详细说明,在将int转换为byte时,只考虑最低的8位。 234可以在这8位中表示,但结果是负数(-22),因为MSB为1.在您的代码中,当您执行时

int i2 = b & 0xFF;

它将数字渲染回32位整数,除了最低8位设置为零之外的所有位。因此,结果是相同的数字234

答案 1 :(得分:1)

我打印输出时如何使字节存储与int相同的值的问题的答案是byte b = (byte) intVariable;。我理解234不会工作,因为它超出了限制,但我没有说我使用的是这个数字,这是我给出的一个例子,虽然我现在理解它没有用,所以很抱歉并感谢所有尝试过的人。