Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Int到具有相同值的字节_Java_Int_Byte - Fatal编程技术网

Java Int到具有相同值的字节

Java Int到具有相同值的字节,java,int,byte,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,但不是我需要的 如果有人知道怎么做,请帮助我。你不能字节只能存储介于-12

我有和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,但不是我需要的


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

你不能<代码>字节只能存储介于
-128
127
之间的数字。当转换不可表示的整数时,必然会发生信息丢失

更详细地说,当将
int
转换为
字节时,只考虑最低的8位
234
可以用这8位表示,但结果是一个负数(
-22
),因为MSB是1。在代码中,当您这样做时

int i2 = b & 0xFF;

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

您不能<代码>字节
只能存储介于
-128
127
之间的数字。当转换不可表示的整数时,必然会发生信息丢失

更详细地说,当将
int
转换为
字节时,只考虑最低的8位
234
可以用这8位表示,但结果是一个负数(
-22
),因为MSB是1。在代码中,当您这样做时

int i2 = b & 0xFF;

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

我的问题的答案是
byte b=(byte)intVariable。我知道234不起作用,因为它超过了限制,但我没有说我在使用这个数字,这是我给出的一个例子,尽管我现在明白它没有帮助,所以很抱歉,感谢你所做的一切。

我的问题的答案是,如何使一个字节在打印输出时存储与int相同的值是
字节b=(字节)intVariable。我知道234不起作用,因为它超出了限制,但我没有说我在使用这个数字,这是我给出的一个例子,虽然我现在明白它没有帮助,所以很抱歉,感谢你所做的一切。

Thanx尝试了一下,但我刚刚稍微明白了,它起作用了manouti想告诉你的是正确的,不能用(有符号)字节表示234,就像不能在int中存储(Integer.MAX_VALUE+1)而不溢出一样。你下面的答案“有效”的原因与你将一个字节打印为234无关。是的,我知道代码中有哪些数据,所以我知道不会有溢出,除非我手动硬编码,所以有一个,数字234不是我正在使用的数字,这是我从上一篇文章中选取的一个例子。字节b=(字节)12;是我一直在寻找和解决我的问题,是我的问题的答案。你似乎把我的例子理解为文字,而不是看我最初问的问题,我问了如何在打印出来时使字节存储与int完全相同的值,我找到了答案。我使用的int不是问题所在。但我确实看到我的例子很有帮助。Thanx尝试了一下,但我只是稍微想了一下,它成功了。manouti想告诉你的是,你不能用一个(有符号)字节来表示234,就像你不能在int中存储(Integer.MAX_VALUE+1)而不溢出一样。你下面的答案“有效”的原因与你将一个字节打印为234无关。是的,我知道代码中有哪些数据,所以我知道不会有溢出,除非我手动硬编码,所以有一个,数字234不是我正在使用的数字,这是我从上一篇文章中选取的一个例子。字节b=(字节)12;是我一直在寻找和解决我的问题,是我的问题的答案。你似乎把我的例子理解为文字,而不是看我最初问的问题,我问了如何在打印出来时使字节存储与int完全相同的值,我找到了答案。我使用的int不是问题所在。但我确实看到我的例子很有帮助。