将小数转换为十六进制数

时间:2013-06-04 22:23:49

标签: c decimal number-formatting hex

为什么我们使用+ 55将十进制转换为十六进制数。在这段代码中,我们使用+48将整数转换为字符。当温度< 10。但是当温度> = 10我们使用+55。这是什么意思+55?

#include<stdio.h>
int main(){
    long int decimalNumber,remainder,quotient;
    int i=1,j,temp;
    char hexadecimalNumber[100];

    printf("Enter any decimal number: ");
    scanf("%ld",&decimalNumber);

    quotient = decimalNumber;

    while(quotient!=0){
         temp = quotient % 16;

      //To convert integer into character
      if( temp < 10)
           temp =temp + 48;
      else
         temp = temp + 55;

      hexadecimalNumber[i++]= temp;
      quotient = quotient / 16;
  }

    printf("Equivalent hexadecimal value of decimal number %d: ",decimalNumber);
    for(j = i -1 ;j> 0;j--)
      printf("%c",hexadecimalNumber[j]);

    return 0;
}

4 个答案:

答案 0 :(得分:8)

在ASCII环境中,55等于'A' - 10。这意味着添加55与减去10并添加'A'相同。

在ASCII中,'A''Z'的值是相邻且连续的,因此这会将10映射到'A',将11映射到'B',依此类推。

答案 1 :(得分:5)

对于temp小于10的值,相应的ASCII码为48 + temp

0 => 48 + 0 => '0'
1 => 48 + 1 => '1'
2 => 48 + 2 => '2'
3 => 48 + 3 => '3'
4 => 48 + 4 => '4'
5 => 48 + 5 => '5'
6 => 48 + 6 => '6'
7 => 48 + 7 => '7'
8 => 48 + 8 => '8'
9 => 48 + 9 => '9'

对于10或更高的值,相应的字母55 + temp

10 => 55 + 10 => 'A'
11 => 55 + 11 => 'B'
12 => 55 + 12 => 'C'
13 => 55 + 13 => 'D'
14 => 55 + 14 => 'E'
15 => 55 + 15 => 'F'

答案 2 :(得分:4)

由于C中字符的ASCII编码。当余数(temp)小于10时,十六进制中的数字也在0到9的范围内。 #39; 0&#39;到&#39; 9&#39;在ASCII范围48到57之间。

当余数大于10(并且总是小于15,由于余数运算%)时,十六进制数字在A到F的范围内,在ASCII中的范围是65到70所以temp + 55是一个从65到70的数字,因此给出了一个范围为&#39; A&#39;到&#39; F&#39;。

更常见的是使用字符串char[] digits = "0123456789ABCDEF";并将余数用作此字符串中的索引。你问题中的方法(可能)也适用。

答案 3 :(得分:1)

十六进制数是使用16个符号表示的数字,它们是0-9个数字和A-F字母。编写c程序以将十进制数转换为十六进制的过程是:在每一步中将十进制数除以16并取余数

这里使用剩余0到9个数字然后代表10到15个数字我们使用字母A,B,C,D,E,F。现在将所有余数从下到上连续组合,即A这是十六进制数10(十进制)

例如,要将十进制数10转换为十六进制

16 | 10     | 0 - A

现在将所有剩余部分从下到上连续组合,即A.这是10(十进制)的十六进制数

程序逻辑:输入十进制数n,将n除以16(因为十六进制)并将余数保存在数组中,将商保存在n重复中,直到n大于零

查看以下程序: http://www.programmingsimplysolved.com/c-programs/c-program-to-convert-decimal-number-to-hexadecimal-using-functions/

贡献者:www.programmingsimplysolved.com