C语言学的不是很懂,希望可以帮助一下
{
int Dec;
int i=0;
string Hex=" ";
cin>>Dec;
do{
switch(Dec%16)
{
case 1: Hex='1'+Hex;break;
case 2: Hex='2'+Hex;break;
case 3: Hex='3'+Hex;break;
case 4: Hex='4'+Hex;break;
case 5: Hex='5'+Hex;break;
case 6: Hex='6'+Hex;break;
case 7: Hex='7'+Hex;break;
case 8: Hex='8'+Hex;break;
case 9: Hex='9'+Hex;break;
case 10: Hex='A'+Hex;break;
case 11: Hex='B'+Hex;break;
case 12: Hex='C'+Hex;break;
case 13: Hex='D'+Hex;break;
case 14: Hex='E'+Hex;break;
case 15: Hex='F'+Hex;break;
case 0: Hex='0'+Hex;break;
default: break;
}
i++;
Dec=Dec/16;
}while(Dec);
cout<<Hex;
return 0;
}
不断求余16
#include <stdio.h>
int main()
{
char hex[9] = {0};
int n;
scanf("%d",&n);
int pos = 7;
while(n>0)
{
int m = n%16;
if(m < 10)
hex[pos] = m + '0';
else
hex[pos] = m + 'A' - 10;
pos--;
n=n/16;
}
printf("%s",hex+pos+1);
return 0;
}
除16取余法,用位运算代替除法
#include<stdio.h>
int main(){
int n,i,len;
char hex[8];
scanf("%d",&n);
for(len=0;n>0;len++){
hex[len]=n&0xf;//相当于hex[len]=n%16
n>>=4;//相当于n=n/16
}
for(i=len-1;i>=0;i--){//从高位到地位遍历
if(hex[i]>9){//如果hex[i]大于9,转化为对应大写字母输出
putchar(hex[i]-10+'A');
}else{//如果hex[i]小于等于9,转化为数字输出
putchar(hex[i]+'0');
}
}
}