我正在研究將std::string
中的二進制數解析爲int
的函數。不知何故,它失敗了。讀取一個二進制數
int bin2dec(string &binstr)
{
unsigned int count = 0;
int dec = 0;
while (count < binstr.size()) {
if(binstr[count] == '1') {
dec += (dec + pow(2, count));
}
count++;
}
return dec;
}
您似乎將最左邊的位視爲最不重要最右邊的比特是最重要的,這比通常使LS比特位於右邊的慣例更向後。 – 2015-01-26 22:52:31
因爲什麼時候是'int' * decimal *?另外,在這裏使用'pow'(因此是浮點)是一個非常糟糕的主意。 – Deduplicator 2015-01-26 22:53:23
我也這麼認爲,並試圖扭轉我掙扎的那串,然後它沒有修復它。當我輸入0001時,輸出是8,因此你是對的,但是如果我輸入1111,我得到32,所以我知道我也在做其他錯誤。 – budroothedog 2015-01-26 22:55:32