それぞれ true と false を表す 1 と 0 として表される x ビット値があるとします。これらを 8 ビットバイトに変換するにはどうすればよいですか? ビット数をバイト数(x/8)に変換する方法を知りたくありません。このようなものを変換する方法を知りたいです:
10000010 ~ バイト
また
100000101000001 を float に
問題は議論の余地があります(詳細情報なし)。ビットは複数の順序(エンディアン)で表され、下位ビットが最初または最後になります。エンディアンの順序を定義する必要があります。シングルバイトからワードに移動すると、ビットの順序がバイトの順序と異なる可能性があるため、エンディアンの質問はさらに困難になります。
整数から浮動小数点数への移行は、さらに別のレベルの複雑さです。浮動小数点数は、ビットの順序とはまったく異なる表現を持っています。
ポータブルコードは、定義された表現(ネットワーク順序、printfなど)を使用し、ビットを手動でパックしようとすることから遠く離れています。
したがって、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;
}