如何将位转换为字节?

时间:2011-05-21 00:44:38

标签: byte bits

如果我有一个x位值表示为1和0分别表示真和假。我如何将这些转换为8位字节?我不想知道如何将位数转换为字节数(x / 8)。我想知道如何转换这样的东西:

10000010到一个字节

100000101000001到一个浮点

3 个答案:

答案 0 :(得分:1)

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

参考:

How can I convert bits to bytes?

答案 1 :(得分: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;
                    }

答案 2 :(得分:0)

这个问题没有实际意义(没有更多信息)。比特可以用多个顺序(子序列)表示,低位比特是第一个或最后一个。您需要有一个已定义的字节顺序。一旦从单个字节移动到字,由于位的顺序可能与字节的顺序不同,因此字节序问题变得更具挑战性。

从整数移动到浮点数是另一个复杂程度。浮点数具有不同的表示,这些表示与位的顺序完全不同。

便携式代码将使用已定义的表示形式(网络顺序,printf等),并且远离尝试手工打包的位置。