2017-11-30 5 views
0

私は4つの整数をバイナリに変換しています。ゼロを変換するまではすべて正常に動作します。例えばandroidスタジオでint 0をバイナリに変換する

int subnet1 = 255; 
int subnet2 = 255; 
int subnet3 = 255; 
int subnet4 = 0; 

binarystring = Integer.toBinaryString(subnet1) 
+ Integer.toBinaryString(subnet2) 
+ Integer.toBinaryString(subnet3) 
+ Integer.toBinaryString(subnet4); 

BinaryView.setText(binarystring); 

テキストは次のようになります。11111111 11111111 11111111 0(その間のスペースなし)

なぜ文句を言わない、それは00000000に0を変換します?

+0

重複(https://stackoverflow.com/questions/4421400/how-to-get-0-padded-binary-representation-of-an-integer-in-:擬似コードでjava) –

答えて

0

"0000000"の値は"0"と同じで、その理由は"0"と設定されています。

その結果を印刷する場合は、印刷する文字列を"0000000"にしてください。 int値は常にそれを変換するためです。

0

あなたがここにドキュメント読んでいる場合:https://developer.android.com/reference/java/lang/Integer.html#toBinaryString(int)

をそれはあなたに伝えます:

引数が負の場合、符号なし整数値を引数プラス232です。それ以外の場合は引数に等しい。この値は、2進数(2の基数)ののASCII数字の文字列に変換され、余分な先頭は0です。

0

なぜですか? デザインによってdocumentationから:

この値は、余分なリーディング0とバイナリ(ベース2)のASCII文字列に変換されます。

(強調は追加。)

あなたが8つの文字を使用する場合は、7ゼロの文字列に結果を追加し、最後の8つの文字を取ります。 [本]の

intermediateString = "0000000" + Integer.toBinaryString(0); // obviously don't hard code zero; just for example 
finalString = intermediateString.substring(intermediateString.length() - 8); 
関連する問題