2011-09-10 130 views
4
byte abc[]="204.29.207.217"; 

這是給出錯誤。請告訴我正確的方法。如何爲字節數組賦值

+0

可能重複[轉換的InputStream字節爲\ [\]在Java中在(http://stackoverflow.com/questions/1264709/convert-inputstream-to-byte-in-java) – bmargulies

回答

25

如果你想分配硬編碼的值,你可以使用:

byte[] bytes = { (byte) 204, 29, (byte) 207, (byte) 217 }; 

注投因爲Java字節簽訂 - 中投在這裏的溢出將基本強制爲負值,這可能是你想要的。

如果你是實際上試圖解析一個字符串,你需要這樣做 - 將字符串拆分成部分和解析每一個。

如果你想將字符串轉換成它的二進制表示在某些特定的編碼,你應該使用String.getBytes,例如

byte[] abc = "204.29.207.217".getBytes("UTF-8"); 

(請注意,傳統的[]被置爲變量的類型的一部分,而不是變量名之後。而後者則是允許的,它氣餒,因爲風格問題。)

+0

請問'(字節)128'結果' - 1'?我總是對它感到困惑。我知道它可以在C++中工作(除了我們必須使用'char'而不是'byte'),但我對Java沒有把握。 –

+1

@Martijn:不,'(byte)128'會導致-128。 '(byte)255'將導致-1。 –

+1

@Martijn'byte'是Java中的一個8位有符號整數,範圍從-128到+127。它存儲在[two's complement](http://en.wikipedia.org/wiki/Two%27s_complement)格式中。 – Jesper

2

可以使用char []或String。確保獲得String的包含。

3

這是一個字符串字面。如果您希望獲取字符串的二進制表示形式,請使用String.getBytes方法之一。