C语言编程:怎么把一个十进制数转换成为一个十六进制数?

作者&投稿:邵科 (若有异议请与网页底部的电邮联系)
c语言编程 把十进制转换为十六进制~

方法一:#include#include using namespace std;
string DecIntToHexStr(long long num){string str;long long Temp = num / 16;int left = num % 16;if (Temp > 0)str +=
DecIntToHexStr(Temp);if (left < 10)str += (left + '0');elsestr += ('A' + left - 10);return str;}string DecStrToHexStr(string str){long long Dec = 0;for (int i = 0; i < str.size(); ++i)Dec =
Dec * 10 + str[i] - '0';return DecIntToHexStr(Dec);}int main(){string DecStr;while (cin >> DecStr){cout << "0x" + DecStrToHexStr(DecStr);}return 0;}
方法二:
#include#include #include
#include #include using namespace std;int main()
{string decStr;cin >> decStr;int num = stoi(decStr);vectorv;while (num){int bit = num % 2;v.push_back(bit);num = num / 2;}
reverse(v.begin(), v.end());string hexStr;if (v.size() % 4 == 0){for (int i = 0; i < v.size() / 4; ++i){int temp = 0, k = 3;for (int j = i * 4; j < (i +
1) * 4; ++j){if (v[j] == 1)temp += pow(2, k);--k;} if (temp <= 9)hexStr += temp;elsehexStr += ('A' + temp - 10);}}
else{int zeroNum = 4 - v.size() % 4;for (int i = 0; i < zeroNum; ++i)v.insert(v.begin(), 0);for (int i = 0; i < v.size() / 4; ++i){int temp = 0, k = 3;for
(int j = i * 4; j < (i + 1) * 4; ++j){if (v[j] == 1)temp += pow(2, k);--k;}if (temp <= 9){stringstream ss;string strTemp;
ss > strTemp;hexStr += strTemp;}elsehexStr += ('A' + temp - 10);}}cout << hexStr << endl;return 0;}
扩展资料:
还有3种方式可以实现,其中两种是使用系统函数,另一种是直接自己编写。
下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。
利用系统函数有
1. char * itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}
2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}
3. 自己编写

如果参数只要两位数的整数,那么很简单。
代码如下:
#include #include char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa)
{ sprintf(buffer, "%x", aa); return (buffer);} int main ()
{ int num; char * hex_str; printf ("Enter a number: "); scanf ("%d",&num); hex_str = inttohex (num); printf ("Hexadecimal number: %sH
", hex_str); return 0;}

给你个各种进制转换的通用函数,十进制转十六进制,d1=10,d2=16
#include
void conversion(char s[],char s2[],int d1,int d2)
{
// s[]:转换前的数字
// s2[]:转换后的数字
// d1:原进制数
// d2:需要转换到的进制数
// 高于9 的位数用大写'A'~'Z'表示
int i,j,t,num=0;
char c;
for (i=0;s[i]!='\0';i++)
{
if(s[i]='0')
t=s[i]-'0';
else
t=s[i]-'A'+10;
num=num*d1+t;
}
i=0;
while(1)
{
t=num%d2;
if (t<=9)
s2[i]=t+'0';
else
s2[i]=t+'A'-10;
num/=d2;
if (num==0)
break;
i++;
}
for(j=0;j<=i/2;j++)
{
c = s2[j];
s2[j] = s2[i-j];
s2[i-j] = c;
}
s2[i+1]='\0';
}
int main()
{
char a[100],b[100]={0},c[100]={0};
int n,m;
while(1)
{

scanf("%d%d%*c",&n,&m);
gets(a);
conversion(a,b,n,m);
printf("%s
",b);//想转成int型,可用int k=atoi(b);
}
return 0;
}

第一种:用来糊弄老师的,输入一个数采用16进制格式输出
#include <stdio.h>

int main()
{
int num = 0;

scanf("%d", &num);
printf("%x", num);

return 0;
}

第二种:
#include <stdio.h>
#include <string.h>

char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
void dToO(int, char*);

int main()
{
int dNum;
char oNum[100] = {0};

//输入一个十进制数
scanf("%d", &dNum);

//调用转换函数,将十进制转换成以字符串表示的十六进制
dToO(dNum, oNum);

//输出以字符串表示的16进制数据
printf("%s\n", oNum);

return 0;
}

void dToO(int dNum, char* oNum)
{
char temp[100] = {0};

for (int i = 0; (dNum) && (i < 100) ; i++) {
temp[i] = (dNum % 16);
if (temp[i] > 9) {
temp[i] = oNumTable[temp[i] - 10];
}
else{
temp[i] += '0';
}
dNum /= 16;
}

char* p = temp;
while (*(p+1)) p++;

for (int i = 0; p != temp - 1; i++, p--) {
oNum[i] = *p;
}
}

#include <stdio.h>
int main()
{int x;
printf ("请输入十进制:");
scanf("%d",&x);
printf("十六进制:%x",x);
return 0;
}

#include <stdio.h>
#include <string.h>
int main()
{
int i=0,p,n;
char b[10];
scanf("%d",&n);
while(n!=0)
{
p=n%16;
if(p>9) b[i++]='A'+p-10;
else b[i++]='0'+p;
n/=16;
}
b[i]='\0';
for(i=strlen(b)-1;i>=0;i--)
printf("%c",b[i]);
return 0;
}


用c语言编程“把1字符串数组加到另一字符串数组后面”
include "stdio.h"include "string.h"int main(){ char ch1[50],ch2[50];int n;printf("输入两个字符串:");scanf("%s %s",ch1,ch2);printf("%s\\n%s\\n",ch1,ch2);n=strlen(ch1);\/\/方法1:strcat(ch1,ch2);printf("%s\\n",ch1);\/\/方法2 for(int i=0;i<=strlen(ch2);i++)...

用java语言编程:把一元钞票换成一分、二分、五分硬币(每种至少一枚...
if(i*1+j*5+k*2==100)System.out.println("1元钞票可以换为"+i+ "枚1分硬币和"+j+"枚2分硬币和"+k+ "枚5分硬币\\n");} } }

c语言编程怎么让一个东西碰到另一个东西消失
c语言编程让一个东西碰到另一个东西消失:将动量、能量和摩擦力等因素考虑进去,先把函数关系列出来,然后再用C语言计算结果,把结果画出来就行了。

用c语言编程,求从1的阶乘一直加到20的阶乘。
1、首先打开C语言编辑器,新建一个c语言的文件,导入头文件并设置一个主函数:2、程序中设置一个循环的临时变量和接受阶乘和的sum变量,循环中先遍历出20以内的数字子,然后计算每个数的阶乘,在将它们相加起来,因为是一个非常大的数,所以这里sum是double类型的,最后把结果输出就可以了:3、最后调试...

C语言编程怎么将截断一个数组的一部分?
include<stdio.h> int main(){ int a[10]={1,6,7,8,3};int b[10]={0};int r,l,len=0;r=2;l=3;for(int i=r;i<=l;i++)\/\/截取部分a赋给b { b[len++]=a[i];} for(int i=0;i<len;i++)\/\/输出b数组 { printf("%d ",b[i]);} return 0;} ...

C语言编程求1到100中能被3整除的数并输出
1、首先新建一个工程和.c文件。2、然后输入头文件和主函数。3、接着输入定义变量类型。4、用一个for循环去遍历100~120之间的所有数。5、用if循环去判断该数能否被3整除。6、最后编译,运行就完成了。注意事项:尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C...

用java语言编程:有1、2、3、4四个数字,能组成多少个互不相同且无重复...
public static void main(String[] args) throws Exception {\/\/主函数 int[] arr={1,2,3};\/\/给一个数组 int count=3;\/\/给位数 num(arr,count);\/\/调用① System.out.print(num);\/\/输出用逗号拼接的全部数字(可以用逗号拆分,然后算长度)} \/\/arr 数组, count 位数 private static void...

c语言编程 求格式为若输入1 则输出一个值 若输入2则输出另一个值怎么...
读取输入,判断 ,输出 比如 int main(){ int c; scanf("%d",&c); if(c==1) printf("aaaaa\\n"); else if(c==2) printf("bbbbb\\n"); return 0;}

用java语言编程:有1、2、3、4四个数字,能组成多少个互不相同且无重复...
int i=0; \/\/保存百位上的数int j=0; \/\/保存十位上的数int k=0; \/\/保存各位上的数int t=0; \/\/保存数字个数 for(i=1;i<=4;i++){ for(j=1;j<=4;j++){ for(k=1;k<=4;k++){if(i!=j && j!=k && i!=k){ t+=1;System.out.println(i*100+j*...

C语言编程问题:求 1!+2!+3!+...+n!
把sum=sum+x;移到}后、x=1;前。int main(void){ int sum,n,x,t;scanf("%d",&n);for(sum=0,x=t=1;t<=n;sum+=x*=t++);printf("%d\\n",sum);return 0;}

怀仁县15374489353: C语言:将一个十进制的正整数转换为二进制数并输出结果. -
黎咸弥乐: //十进制转二进制#include <stdio.h> main() { int a[100]={0},x,j,i=0; scanf("%d",&x); while(x) //while(x!=0) { a[i]=x%2; x=x/2; i++; } for(j=i-1;j>=0;j--) printf("%d",a[j]); }

怀仁县15374489353: 如何用C语言编写函数实现输入一个十进制数, 将其转换成二进制数并输出? -
黎咸弥乐: #include stdio.h #include math.h void main() { int n,a[100],i; printf("请输入"); scanf(&n); i=0; while(n>0) { a[i]=n%2; i=i+1; n=n/2; } for(j=i-1;j>-1;;j--) printf("%d",a[j]); }

怀仁县15374489353: c语言输入一个十进制数,把它转换成各种进制然后输出 -
黎咸弥乐: 请在此输入您的 #include<stdio.h> int main() {long n;int a[1000], b, i, j, r;while (scanf("%ld%d", &n, &r) != EOF){if (n < 0) {n = -n; printf("-"); }if (n == 0) printf("0");i = 0;while (n > 0){b = n % r;a[i] = b;n = n / r;i++;}for (j = i - 1; j >...

怀仁县15374489353: 用C语言编程将十进制转换为二进制和十六进制 -
黎咸弥乐: 十进制转二进制:----------------------------------------------- #include<stdio.h> #include<conio.h> void main() { int d,n,i,j,a[50],Outformat=1; printf("输入一个数:"); scanf("%d",&n);if(n==0) printf("\n十进制 0 转换二进制数:0"); else { printf("\...

怀仁县15374489353: C语言程序十进制的数转换成八进制的数 -
黎咸弥乐: C语言程序十进制的数转换成八进制的数的办法: #include <stdio.h> #include <math.h> void main() { int n,a,sum = 0,i =0; printf("十进制输出一个数n\n"); scanf("%d",&n); while(n) { a = n%8; n = n/8; sum += a*pow(10,i); i++; } printf("八进制输出sum:%d",sum); }

怀仁县15374489353: C语言中十进制数转换成其他进制 -
黎咸弥乐: #include <stdio.h> void main(){int m=16;//例子为16时int a[20],i;printf("16进制%x\n8进制%o\n\n",m,m,m,m);/* %x 16 %o 8 这俩个可以直接输出 */i=0;while(m!=0){//用a[i]装,在反向输出a[i]=m%2;m=m/2;i++;}printf("2进制");for(int j=i-1;j>=0;j--)printf("%d",a[j]);printf("\n");}

怀仁县15374489353: c语言编程怎么实现进制转换? -
黎咸弥乐: 1、十进制转换成八进制有两种方法: (1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制. (2)直接法:八进制是由二进制衍生而来的,因此可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的...

怀仁县15374489353: 用C语言写算法将一个十进制数转换为指定制式的数,要求:用使用栈完成 -
黎咸弥乐: /*参考代码如下:*/#include<stdio.h> int main() { int stk[100]={0},sp=0; int n,t; scanf("%d%d",&n,&t); if(t<=1){ printf("error"); return 0; } if(n==0){ printf("0"); return 0;}if(n<0){ printf("-"); n=-n; } while(n>0){ stk[sp]=n%t; ++sp; n=n/t; } while(sp...

怀仁县15374489353: C语言:输入一个十进制转化成八进制输出
黎咸弥乐: #include main() {int a,b,c,d,e=0; int j=0; printf(“输入十进制数据:”); scanf(“d%”,&a); if(a=8); } b=c*pow(10,j)+e; printf(“\n所所求八进制数为:d%”,b); }

怀仁县15374489353: c语言 将十进制数用算法转换成其它进制
黎咸弥乐: 这个是用 求余来算,比如求十进制数 x(x&gt;100) 的8进制,先通过 x%8 可以得到个位(末位)上的数(你可以思考一下,为什么是求余得到的结果作为个位,当十进制数等于8时,必然会进位,求余的结果正好是不能进位的部分),再 x=x/8...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网