将小数转换为hex数

为什么我们使用+ 55将十进制转换为hex数。 在这段代码中,我们使用+48将整数转换为字符。 当temp = 10时,我们使用+55。 +55是什么意思?

#include 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  0;j--) printf("%c",hexadecimalNumber[j]); return 0; } 

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

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

对于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' 

由于C中字符的ASCII编码。当余数( temp )小于10时,hex中的数字也在0到9的范围内。字符’0’到’9’在ASCII范围内48至57。

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

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

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

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

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

16 | 10 | 0 – A.

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

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

查看计划: http : //www.programmingsimplysolved.com/c-programs/c-program-to-convert-decimal-number-to-hexadecimal-using-functions/

贡献者:www.programmingsimplysolved.com