如果我有一个x位值表示为1和0分别代表真和假。我将如何将这些转换为8位字节?我不想知道如何将位数转换为字节数(x/8)。我想知道怎么是这样的转换:如何将位转换为字节?
10000010的字节
或
100000101000001为float
如果我有一个x位值表示为1和0分别代表真和假。我将如何将这些转换为8位字节?我不想知道如何将位数转换为字节数(x/8)。我想知道怎么是这样的转换:如何将位转换为字节?
10000010的字节
或
100000101000001为float
的问题是没有实际意义(无更多信息)。位可以以多个顺序(endians)表示,低位位首先或最后一位。您需要有一个已定义的排序顺序。一旦从单个字节移动到单词,由于位的顺序可能与字节的顺序不同,因此尾端问题变得更具挑战性。
从整数移动到浮点数是另一个复杂程度。浮点数具有与位顺序完全不同的表示。便携式代码将使用定义的表示形式(网络顺序,printf等),并且远离尝试手动打包比特。
我指的是一种数学方法,而不是一种程序化的方法。如果你确实提供了一个程序化的解决方案,请给出一些解释 – TimeCoder 2011-05-21 00:52:34
所以我猜你想要 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;
}
认为它是大端还是小端只影响字节排序。 – TimeCoder 2011-05-21 01:07:31
@TimerCoder:http://en.wikipedia.org/wiki/Bit_numbering – 2011-05-21 01:14:10