私はバイト配列、すなわちをバイト[0]からバイト[2]まで持っています。私は最初にバイト[0]を8ビットに分割したいと思います。その後、バイト[1]と最終的にバイト[2]。分割することによって、もしbyte [0] = 12345678なら、変数A = 8、変数B = 7、変数C = 6、変数D = 5、........変数H = 0 。どのようにバイトを分割し、ビットを変数に格納するのですか?私はJAVAでこれをしたいバイトをビットに分割する
答えて
よくビット単位の操作はあなたが話しているものとほとんど同じようです。 バイトは8ビットで構成され、そしてそれは00000000 11111111へ
ビットごとの演算は、できるだけ多くの情報を得るために基本的にマスクを使用するものであるのバイナリで書かれた255 に0の怒りに行きますバイトから
たとえば、1101 0011バイト(可視性のためだけにスペースが追加されています)= 211(10進数)です。これを半分のバイトの2つの "変数" b1とb2に分割することができます。 0〜15の範囲をカバーします。
どのようにするかは、いくつかのマスクを定義することです。最初のハーフバイト値を取得するマスクは0000 1111になります。 11010011の値を取ると、ビット単位で(&)演算子が適用されます。 バイトb = 211と言っています。バイトマスク1 = 15; ORバイトb = 0x11010011;バイトマスク= 0x00001111; 次に、可変バイトb1 = b & mask1;
したがって、この操作を適用すると、b1 = 00000011 = 3となります。 マスクバイトmask2 = 0x11110000の場合。同じ操作をbに適用すると、バイトb2 = mask2となります& b = 0x11010000;
もちろん、数字b2はおそらく大きすぎます。あなたが値0x1101をつかみたいのであれば、それを右にシフトするだけです。したがって、b2 >> = 4;
マスクはどのような形でも使用できますが、2の桁数で10進数にしておくことで(バイトから任意のビットを取り出すことができるように)、または変数に必要な範囲を決めてマスクは0x00000011のような「大きい」、またはox00001100のようになります。これらの2つのマスクはそれぞれ、1つのバイトから2つの値を取得し、各値は0から3の範囲で、4つの値を1つのバイトの内側に収めることができます。
詳細については、relevant wikiをご覧ください。
バイトは-128から127に行くようですが、考え方は同じであるので、申し訳ありませんが、値が(少しオフだった。
セカンド編集(自分が笑ビット演算を使用したことがありません)... " 。0X」あなたが実際に実際に何を意味するのか01001111自分のために計算する必要がありますので表記は...十六進のためにかなり嫌です:|それはトリックを行うつもりだ
boolean a = (theByte & 0x1) != 0;
boolean b = (theByte & 0x2) != 0;
boolean c = (theByte & 0x4) != 0;
boolean d = (theByte & 0x8) != 0;
boolean e = (theByte & 0x10) != 0;
boolean f = (theByte & 0x20) != 0;
boolean g = (theByte & 0x40) != 0;
boolean h = (theByte & 0x80) != 0;
ほんの少しのコメント:0ではなく1と照合する必要がありますか? –
@BorisStrandjev彼は0x80と0x80がまだ0x80なので、> 0をチェックするべきです。 – AlanFoster
または!= 0実際に。 2人のうちのどちらがもっと速くなるのかはわかりません... –
- 1. ビット配列内の分割バイト配列
- 2. バイト配列を分割する方法
- 3. バイトを分割する方法[]
- 4. HMACSHA256出力バイト/ビット
- 5. Javaでバイト配列を分割する方法は?
- 6. このビットを分割する方法は?
- 7. 整数を1バイトに分割し、FreeBASICで再びマージするには?
- 8. 分割する分割ウィンドウ
- 9. Windows Phone 7.1:分割バイト[]イメージとBitmapImageに変換
- 10. 残余バイト配列(未知のサイズ)を残してチャンクに分割する
- 11. ビデオストリームをgstreamerで分割/分割する
- 12. クリップボードを分割で分割する
- 13. バイト境界にないビット位置から開始するバイト配列からバイトを抽出する方法#
- 14. 整数を2バイトに分解する
- 15. QFile:ファイルを部分に分割する
- 16. ビットの文字列表現をバイトに変換する
- 17. Pythonバイトを「符号なし8ビット整数」に変換する
- 18. 32ビット符号なし "Real"データ型(2つの16ビット符号付きワードに分割)をjavascriptに変換
- 19. Perl変数をバイト/ビットで表示
- 20. 分割dmpファイルを複数のdmpファイルに分割する
- 21. 分割裁定ストリングをラインに分割する
- 22. 64ビットの数値をVBScriptの上位32ビットと下位32ビットに分割するにはどうすればよいですか?
- 23. Cビット操作/ 1バイトから別のバイトへのコピー
- 24. Marshal.SizeOfが余分なバイトに
- 25. 8ビットのバイトを6ビットの文字に変換するにはどうすればよいですか?
- 26. C#を使用してバイト配列のビットを設定する
- 27. Delphiのバイト変数の操作ビット
- 28. バイトのJavaビット単位の比較
- 29. 文字列を分割して分割セグメントを変数に割り当てる
- 30. データパーティションをトレーニング、テスト、および検証に分割する - Rで分割する
@Samir:。。おかげサミル代わりに、編集の – suraj
あなたは 'Integer.toBinaryString(your_byte_value)'を試しましたか? – waqaslam
あなたはこう言っています: "私はあなたが私の質問に答えたなら、 0] = 12345678 "、バイトの変数は' 12345678'の値を持ち、sunの指定ではバイトは '-128'から' 127'です。 – MJM