4

为什么我们使用 + 55 将十进制转换为十六进制 num 。在这段代码中,我们使用 +48 将整数转换为字符。当温度 < 10 。但是当 temp > =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

4 回答 4

8

在 ASCII 环境中,55 等于'A' - 10. 这意味着加 55 与减 10 和加 相同'A'

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

于 2013-06-04T22:32:36.987 回答
6

对于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'
于 2013-06-04T22:33:12.793 回答
5

由于 C 中字符的ASCII编码。当余数(temp48 至 57。

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

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

于 2013-06-04T22:33:23.077 回答
1

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

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

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

16 | 10 | 0 - 一个

现在从下到上依次组合所有余数,即 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

于 2018-05-22T07:04:57.293 回答