如果我有一個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