2012-10-13 83 views
2

我需要創建一個將一個數字系統轉換爲其他數字系統的程序。我在Windows(Dev C++)中使用itoa,唯一的問題是我不知道如何將二進制數轉換爲其他數字系統。所有其他數字系統轉換工作相應。這是否涉及存儲要使用%轉換的輸入?在C程序中存儲「二進制」數據類型

這是我工作的一個片段:

case 2: 
     { 
      printf("\nEnter a binary number: "); 
      scanf("%d", &num); 
      itoa(num,buffer,8); 
      printf("\nOctal  %s",buffer); 
      itoa(num,buffer,10); 
      printf("\nDecimal  %s",buffer); 
      itoa(num,buffer,16); 
      printf("\nHexadecimal %s \n",buffer); 
      break; 
     } 

對於小數我用%d,八進制我用‰和十六進制我使用%×。什麼可能是二進制正確的?感謝未來的答案!

+1

基本上是一個副本:http://stackoverflow.com/questions/2343099/convert-binary-format-string-to-int-in-c –

+2

簡答:沒有。大家可以做的只是讀取一個字符串(例如,用'%s')然後轉換(例如用'strtol')。 –

+1

你知道'itoa'是非標準的,它可能在其他系統上崩潰? – nhahtdh

回答

0

您已經在內存中以二進制形式存在該數字。這些%d,%o和%x只是提示printf-like函數知道如何解釋一個參數並在十進制/八進制/十六進制表示之間進行轉換。 printf沒有二進制格式。相反,你可以遍歷所有各個位,如下所示:

for(int i = 0; i < sizeof(num)*8; i++) 
{ 
    printf("%u", !!(byte & (1 << i))); 
} 
printf("\n"); 

這將打印一個字節(或多個)的所有位,從左邊開始。

相關問題