0

それぞれ true と false を表す 1 と 0 として表される x ビット値があるとします。これらを 8 ビットバイトに変換するにはどうすればよいですか? ビット数をバイト数(x/8)に変換する方法を知りたくありません。このようなものを変換する方法を知りたいです:

10000010 ~ バイト

また

100000101000001 を float に

4

3 に答える 3

1
bytes[byteIndex] |= (byte)(1 << (7-bitIndex));

参照する:

ビットをバイトに変換するにはどうすればよいですか?

于 2011-05-21T00:48:42.727 に答える
0

問題は議論の余地があります(詳細情報なし)。ビットは複数の順序(エンディアン)で表され、下位ビットが最初または最後になります。エンディアンの順序を定義する必要があります。シングルバイトからワードに移動すると、ビットの順序がバイトの順序と異なる可能性があるため、エンディアンの質問はさらに困難になります。

整数から浮動小数点数への移行は、さらに別のレベルの複雑さです。浮動小数点数は、ビットの順序とはまったく異なる表現を持っています。

ポータブルコードは、定義された表現(ネットワーク順序、printfなど)を使用し、ビットを手動でパックしようとすることから遠く離れています。

于 2011-05-21T00:57:05.213 に答える
0

したがって、1 を 1 に変換し、10 を 2 に変換し、11 を 3 に変換するなど、1001011 を 1*2^0 + 1*2^1 + 0*2^2 + 1*2 に変換する必要があると思います。 ^3 + 0*2^4+ 0*2^5 + 1*2^6 = 75

編集: JavaScript の例:

function binarytodecimal(input,l)
                    {
                    var i=0;
                    var dec=0;
                    while (i<l)
                        {
                            var temp1 = parseInt(input.charAt(l-1-i));
                            dec = dec + temp1*Math.pow(2,i);
                            i++;
                        }
                    dec = dec+'';
                    return dec;
                    }
于 2011-05-21T00:49:22.230 に答える