2016-09-21 36 views
1

我發現這個解決方案在計算器上一個字節轉換成char類型:Java的字節轉換爲char - 轉換問題

byte b = 65; 
char c = (char)(b & 0xFF); 

什麼,我不明白的是按位和使用0xFF。上面和這個有什麼不同?

byte b = 65; 
char c = (char)b; 

有人可以一步一步向我解釋什麼是轉換爲什麼類型?

+4

複製http://stackoverflow.com/questions/17912640/byte-and-char-conversion-in-java –

回答

1

「& 0xff」通常用於Java中,以切斷從字節到大整數類型的隱式轉換的符號擴展名。

在Java中,byte是一個有符號數據類型,其中值使用二進制補碼存儲,所以-1表示爲0xff。 -1的對應int表示是0xffffffff。因此,當從一個字節轉換爲一個整數時,所有附加的前導位將從該字節的最高位填充。

按位並且不需要高達0x7f的字節值。但是如果你想轉換一個例如一個非中斷空間(代碼點160/0xa0),它將符號擴展到0xffa0,這是一個不同於預期的char值0x00a0的字符。

+1

我認爲扔掉我的東西是0xFF是一個int而不是一個字節。 –