2015-10-06 57 views
0

我已經有一個將十六進制數字轉換爲二進制形式的程序,唯一的問題是它不接受帶有浮點數的十六進制數字。下面是代碼:如何將C中的十六進制字符串(帶浮點數)轉換爲二進制文件?

/* HEXADECIMAL TO BINARY */ 
    #include<stdio.h> 
    #define MAX 1000 

    int main(){ 
char hexaDecimal[MAX], *pch; 
long int i=0; 
clrscr(); 
printf("Enter any hexadecimal number: "); 
scanf("%s",hexaDecimal); 
printf("\nEquivalent binary value: "); 

while(hexaDecimal[i]){ 
    switch(hexaDecimal[i]){ 
     case '0': printf("0000"); break; 
     case '1': printf("0001"); break; 
     case '2': printf("0010"); break; 
     case '3': printf("0011"); break; 
     case '4': printf("0100"); break; 
     case '5': printf("0101"); break; 
     case '6': printf("0110"); break; 
     case '7': printf("0111"); break; 
     case '8': printf("1000"); break; 
     case '9': printf("1001"); break; 
     case 'A': printf("1010"); break; 
     case 'B': printf("1011"); break; 
     case 'C': printf("1100"); break; 
     case 'D': printf("1101"); break; 
     case 'E': printf("1110"); break; 
     case 'F': printf("1111"); break; 
     case 'a': printf("1010"); break; 
     case 'b': printf("1011"); break; 
     case 'c': printf("1100"); break; 
     case 'd': printf("1101"); break; 
     case 'e': printf("1110"); break; 
     case 'f': printf("1111"); break; 
    default: printf("\nInvalid hexadecimal digit %c ",hexaDecimal[i]); 
    return 0; 
    } 
    i++; 
} 
    getch(); 
return 0; 
} 

我嘗試使用的strtok分割字符串,但它不工作..所有我需要的是這個節目也以十六進制的分數工作。預先感謝您的回覆!

+4

你輸入什麼樣的輸入? 「十六進制浮點數」是什麼意思? – Cubia

+1

你不應該有個案'。' –

+1

輸入是否包含指數的「e」? '''','+','.'怎麼樣? – chux

回答

1

只需添加到您的switch塊:

case '.': printf("."); break; 
0

只需使用strtoul將stdlib.h中定義,你可以將任何基數基地這種方法包括16進制轉換爲十進制。

+0

請閱讀[我如何寫出一個好的答案](https://stackoverflow.com/help/how-to-answer) – Dwhitz

+0

感謝您的幫助。 –

相關問題