簡體   English   中英

在java中將int分配給byte?

[英]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位數字類型,其范圍是-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就可以了。 如果需要將其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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM