私はバイト配列、すなわちをバイト[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. 32ビットの16進数を4バイトに分割する[QB64]
- 3. 16ビットを8ビットの2つの部分に分割する
- 4. RapidMiner:属性をバイトに分割する
- 5. バイトを分割する方法[]
- 6. バイト配列を分割する方法
- 7. ファイルをバイト数で分割する
- 8. 個々のビットをバイトに割り当てる
- 9. は、バイトやビット
- 10. サイズ(1024バイト)で文字列を分割
- 11. イーサネットパッケージを1ピースあたり32ビットに分割する方法
- 12. 32ビット命令をバイトに分割し、cを使用して結果を別のアドレスに移動
- 13. HMACSHA256出力バイト/ビット
- 14. binファイルから読み込み、TCLでバイトに分割する
- 15. アセンブリのx86上の文字列を分割する16ビット
- 16. このビットを分割する方法は?
- 17. Javaによるバイト・ビット操作
- 18. Javaでバイト配列を分割する方法は?
- 19. 可変サイズのバイトで32ビットレジスタを分割する
- 20. python - xビットの2進数をバイト(8ビット)にカット
- 21. 2ビット、1ビット、1ビット、4ビットの値を1バイトの整数に格納する方法
- 22. Pythonで高および低ニブルにバイトを分割
- 23. バイナリへのバイト/ビットのデコード
- 24. 2バイトの最上位ビット
- 25. コンピュータのバイト数とビット数
- 26. 整数を1バイトに分割し、FreeBASICで再びマージするには?
- 27. バイト境界にないビット位置から開始するバイト配列からバイトを抽出する方法#
- 28. TCLの32ビット数値のリストに大きな16進数を分割する
- 29. XMM 128ビットレジスタを2つの64ビット整数レジスタに分割する方法は?
- 30. 分割する分割ウィンドウ
@Samir:。。おかげサミル代わりに、編集の – suraj
あなたは 'Integer.toBinaryString(your_byte_value)'を試しましたか? – waqaslam
あなたはこう言っています: "私はあなたが私の質問に答えたなら、 0] = 12345678 "、バイトの変数は' 12345678'の値を持ち、sunの指定ではバイトは '-128'から' 127'です。 – MJM