2013-01-16 60 views
4

我需要將聲明爲字節數據類型的值轉換爲8位字符串。有沒有可以做到這一點的Java庫方法?例如,應該輸入-128並輸出「10000000」。另外,輸入-3應該給「11111101」。 (我用手工轉換這些。)將字節(java數據類型)值轉換爲位(僅包含8位的字符串)

之前,你認爲這已經回答了很多次了,請讓我解釋一下爲什麼我很困惑。

名稱「字節」有點模棱兩可。所以,在其他答案之後很難。對於我的問題,byte被參照Java數據類型,佔用8位,其值的範圍從-128到127我也並不意味着一個「的字節數組」。我的問題是關於只將一個值轉換爲8位表示。而已。

我已經試過這些:

byte b = -128; //i want 10000000 
Integer.toBinaryString(b); //prints 11111111111111111111111110000000 
Integer.toString(b, 2); //prints -10000000 

如果沒有內置的方法,你可以提出任何方法(也許位移動)?

回答

14

嘗試

Integer.toBinaryString(b & 0xFF); 

此給出了一個浮動長度格式例如4 - >100。似乎沒有獲得固定長度格式的標準解決方案,即4 - >00000100。這裏是一個行定製的解決方案(與0b前置)

String s ="0b" + ("0000000" + Integer.toBinaryString(0xFF & b)).replaceAll(".*(.{8})$", "$1"); 
+0

這似乎很好地工作。非常感謝!!我想知道他們爲什麼不能只有一個'Byte.toBinaryString'方法?!? – davidXYZ

+0

我同意。我試過的第一個選項(沒有成功)是Byte.toBinaryString。 –

+0

我可以編寫一個函數來確保結果用正數填充最多8個字符的零。然而,你的正則表達式工作,但我不明白。你能解釋一下嗎? – davidXYZ

相關問題