Как я могу конвертировать биты в байты? - PullRequest
0 голосов
/ 21 мая 2011

Если у меня есть x-битное значение, представленное как 1 и 0, представляющие истину и ложь соответственно.Как бы я преобразовал их в 8-битные байты?Я не хочу знать, как преобразовать количество бит в число байтов (х / 8).Я хочу знать, как преобразовать что-то вроде этого:

10000010 в байт

или

100000101000001 в число с плавающей запятой

Ответы [ 3 ]

1 голос
/ 21 мая 2011
bytes[byteIndex] |= (byte)(1 << (7-bitIndex));

см.

Как преобразовать биты в байты?

0 голосов
/ 21 мая 2011

Вопрос спорный (без дополнительной информации). Биты могут быть представлены в нескольких порядках (порядковые номера), причем младший бит идет первым или последним. Вы должны иметь определенный порядок байтов. Когда вы переходите от отдельных байтов к словам, вопрос о порядке байтов становится еще более сложным, поскольку порядок битов может отличаться от порядка байтов.

Переход от целых чисел к числам с плавающей запятой - еще один уровень сложности. Числа с плавающей запятой имеют разные представления, которые полностью отличаются от порядка битов.

Переносимый код будет использовать определенные представления (сетевой порядок, printf и т. Д.) И держаться подальше от попыток упаковки битов вручную.

0 голосов
/ 21 мая 2011

Так что я предполагаю, что вы хотите, чтобы 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;
                    }
...