int val = 233;
byte b = (byte) val;
System.out.println(b);
我有一个简单的例子:我有一个带有一些值的整数&我想将该值转换为输出的字节。但在这种情况下,负值即将到来。
如何成功将int值放入字节类型?
答案 0 :(得分:14)
在Java byte范围内是-128到127.您不可能将整数233存储在一个字节中而不会溢出。
答案 1 :(得分:14)
Java的byte
是一个带符号的8位数字类型,其范围为-128
到127
(JLS 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