在java中将int分配给byte?

时间:2010-03-27 15:08:21

标签: java

int val = 233;
byte b = (byte) val;
System.out.println(b);

我有一个简单的例子:我有一个带有一些值的整数&我想将该值转换为输出的字节。但在这种情况下,负值即将到来。

如何成功将int值放入字节类型?

5 个答案:

答案 0 :(得分:14)

在Java byte范围内是-128到127.您不可能将整数233存储在一个字节中而不会溢出。

答案 1 :(得分:14)

Java的byte是一个带符号的8位数字类型,其范围为-128127JLS 4.2.1)。 233超出此范围;相同的位模式代表-23

11101001 = 1 + 8 + 32 + 64 + 128 = 233 (int)
           1 + 8 + 32 + 64 - 128 = -23 (byte)

也就是说,如果你坚持在一个字节中存储int的前8位,那么byteVariable = (byte) intVariable就可以了。如果您需要将其强制转换回int,则必须屏蔽任何可能的符号扩展名(即intVariable = byteVariable & 0xFF;)。

答案 2 :(得分:8)

您可以在一个字节中使用256个值,默认范围是-128到127,但它可以表示具有一些转换的任何256个值。在您的情况下,您需要做的就是遵循屏蔽位的建议。

int val =233; 
byte b = (byte)val; 
System.out.println(b & 0xFF); // prints 233.

答案 3 :(得分:5)

如果您需要无符号值的字节,请使用b&0xFF

答案 4 :(得分:0)

Since, byte is signed in nature hence it can store -128 to 127 range of values. After typecasting it is allowed to store values even greater than defined range but, cycling of defined range occurs as follows.cycling nature of range