[英]Assigning int to byte in java?
int val = 233;
byte b = (byte) val;
System.out.println(b);
我有一個簡單的例子:我有一個有一些值的整數,我想將該值轉換為一個字節用於輸出。 但在這種情況下,負值即將來臨。
如何成功將int值放入字節類型?
在Java中, 字節范圍是-128到127.您不可能將整數233存儲在一個字節中而不會溢出。
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
就可以了。 如果需要將其intVariable = byteVariable & 0xFF;
為int
,則必須屏蔽任何可能的符號擴展名(即intVariable = byteVariable & 0xFF;
)。
您可以在一個字節中使用256個值,默認范圍是-128到127,但它可以表示具有一些轉換的任何256個值。 在您的情況下,您需要做的就是遵循屏蔽位的建議。
int val =233;
byte b = (byte)val;
System.out.println(b & 0xFF); // prints 233.
如果需要無符號值的字節,請使用b&0xFF
。
因為,字節本質上是有符號的,因此它可以存儲-128到127范圍的值。 在類型轉換之后,允許存儲甚至大於定義范圍的值,但是,定義范圍的循環如下發生。 騎行性質的范圍
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.