讓我們Byte.parseByte()
作爲一個例子作爲包裝parseXXX()
之一。包裝的parseXXX()爲符號二進制誤解
從parseByte(String s, int radix)'s JavaDoc
:
將字符串參數如在由 第二參數指定的基數符號的字節。
但是,這不是真的如果radix = 2
。換句話說,中-127
二進制文字是10000000
:
byte b = (byte) 0b10000000;
所以下面應該是真實的:
byte b = Byte.parseByte("10000000", 2);
但不幸的是,它會拋出NumberFormatException
,而是我有如下做到這一點:
byte b = Byte.parseByte("-111111", 2);
其中parseByte()
解析二進制字符串作爲一個符號 - 幅度(符號和幅度),瓦特在這裏它應該解析爲一個帶符號的二進制數(2的補碼,即MSB是符號位)。
我錯了嗎?
研究:你看過源代碼嗎? – jlordo 2013-02-18 13:54:41
@jlordo不,我還沒有。 – 2013-02-18 13:56:31
這樣做,這就是我昨天在發佈[this]之前如何理解這整個問題(http://stackoverflow.com/questions/14926920/java-long-parse-binary-string/14927505#14927505)。 – jlordo 2013-02-18 13:58:15