【问题标题】:How to convert hexadecimal string (with float) to binary in C?如何在 C 中将十六进制字符串(带浮点数)转换为二进制?
【发布时间】:2016-01-03 13:52:05
【问题描述】:

我已经有一个将十六进制数转换为二进制形式的程序,唯一的问题是它不接受带浮点数的十六进制。代码如下:

    /* 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 拆分字符串,但它不起作用。我只需要让这个程序也能处理十六进制分数。感谢您提前回复!

【问题讨论】:

  • 你输入的是什么类型的? “带浮点数的十六进制”是什么意思?
  • 你应该有一个案例'。'
  • 输入是否包含e 用于求幂? -+.怎么样?

标签: c string binary hex


【解决方案1】:

只需使用 stdlib.h 中定义的 strtoul,您就可以通过此方法将任何基数转换为十进制,包括十六进制。

【讨论】:

【解决方案2】:

只需添加到您的switch 块:

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

【讨论】:

    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 2020-10-17
    • 2014-03-01
    • 2017-02-23
    • 2014-08-03
    • 2012-01-22
    • 2018-01-31
    相关资源
    最近更新 更多