String 型の 2 進数をビットに変換して txt ファイルに書き込む方法について質問があります。
たとえば、「0101011」のような文字列があり、ビット型「0101011」に変換してから、ディスク上のファイルに書き込みたいとします。
とにかく、文字列からビットに変換する方法があることを知りたい..
私は彼らがbitarrayを使用することを提案しているWebで検索していましたが、よくわかりません
ありがとう
これを試して:
int value = Integer.parseInt("0101011", 2); // parse base 2
のビット パターンvalue
は、文字列のバイナリ解釈に対応します"0101011"
。value
次に、ファイルに として書き出すことができますbyte
(文字列が 8 桁の 2 進数であると仮定します)。
EDITも使用できますByte.parseByte("0101011", 2);
。ただし、Java のバイト値は常に署名されています。8番目のビットが設定された 8 ビット値( "10010110"
10 進数の 150 など)を解析しようとすると、 NumberFormatException
+127 を超える値は a に収まらないため、 a が返されますbyte
。より大きいビット パターンを処理する必要がない場合"01111111"
、 はByte.parseByte
と同様に機能しInteger.parseInt
ます。
ただし、バイトをファイルに書き込むには を使用することを思い出してください。これは、 1 バイトしか書き込むことはありませんOutputStream.write(int)
が、int
( ではない) 値を取ります。最初は値をbyte
使用することもできます。int
数値のオーバーフローを避けるために、以下のコードを試すことができます。
long avoidOverflows = Long.parseLong("11000000000000000000000000000000", 2);
int thisShouldBeANegativeNumber = (int) avoidOverflows;
System.out.println("Currect value : " + avoidOverflows + " -> " + "Int value : " + thisShouldBeANegativeNumber);
出力を見ることができます
Currect value : 3221225472 -> Int value : -1073741824