[英]Conversion from binary string to decimal?
在下面的代碼中,我將二進制轉換為十進制,然后打印對應的字符。
void convertToChar(int binaryChar[],int length)
{
int multiplier = 0;
int i;
int sum = 0;
for(i=length;i>=0;i++)
{
sum = sum + (binaryChar[i]*pow(2,multiplier));
multiplier = multiplier + 1;
}
printf("\nThe character is: %c",sum);
}
問題在於sum = sum + (binaryChar[i]*pow(2,multiplier));
.它拋出錯誤:警告:從double'
warning: converting to
int'。請幫助!
為什么要使用pow
計算 2 的冪? 它太慢了。 使用1 << p
獲得 2 的 p 次方。 例如, 1 << 0
將給出1 << 1
將給出 2,1 1 << 2
將給出 4。這是由於位移操作的性質:向左移動一位相當於乘以 2 .
此外,您的程序中似乎有一個無限循環:
for(i=length;i>=0;i++)
如果length
>= 0,則循環將永遠不會終止。
這應該解決它:
for(i = length - 1; i>=0; i--) sum += (binaryChar[i]*(1 << multiplier++));
pow
的簽名是:
double pow(double X, double Y);
計算 2^multiplier 使用:
1 << multiplier;
快速提一下:
multiplier
變量。int binaryChar[]
是否正確。 名稱中的字符表示不同的類型(和代碼)...
pow 接受雙打並返回雙打。 一個丑陋的解決方法就是使用演員表
(int)pow(x, y)
但是在這個簡單的程序中,為什么不自己做冪擴展而不是調用 pow 呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.