4

バイト データ型として宣言された値を 8 ビットの文字列に変換する必要があります。これを行うことができるJavaライブラリメソッドはありますか? たとえば、-128 を取り込んで「10000000」を出力する必要があります。また、入力 -3 は "11111101" になるはずです。(私はこれらを手動で変換しました。)

これが何度も回答されていると考える前に、私が混乱している理由を説明させてください.

「バイト」という名前は少しあいまいです。そのため、他の回答に従うのは困難でした。私の質問では、 8 ビットを取り、値の範囲が -128 から 127のJava データ型byteを参照しています。また、「バイトの配列」という意味でもありません。私の質問は、単一の値を 8 ビット表現のみに変換することです。これ以上何もない。

私はこれらを試しました:

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

組み込みの方法がない場合は、何かアプローチを提案できますか (おそらくビットシフト)?

4

1 に答える 1

14

試す

Integer.toBinaryString(b & 0xFF); 

これにより、浮動長形式 (例: 4-> )が得られ100ます。固定長形式、つまり4->を取得するための標準的な解決策はないよう00000100です。これは1行のカスタムソリューションです(先頭に が付き0bます)

String s ="0b" + ("0000000" + Integer.toBinaryString(0xFF & b)).replaceAll(".*(.{8})$", "$1");
于 2013-01-16T17:22:22.993 に答える