c语言函数转换十六进制数 c语言十进制转化为十六进制

c语言编程 把十进制转换为十六进制

方法一:

创新互联建站主营河源网站建设的网络公司,主营网站建设方案,手机APP定制开发,河源h5重庆小程序开发公司搭建,河源网站营销推广欢迎河源等地区企业咨询

#includeiostream

#include string

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'); else str += ('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;}

方法二:

#includeiostream

#include string

#includevector

#include sstream

#include math.h

using namespace std;int main()

{ string decStr; cin decStr; int num = stoi(decStr); vectorintv; 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; else hexStr += ('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 temp; ss strTemp; hexStr += strTemp; } else hexStr += ('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 stdio.h#include stdlib.h 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\n", hex_str);  return 0;}

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

第一种:用来糊弄老师的,输入一个数采用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;

}

}

用C语言如何把十进制转换为十六进制,要求程序中运用函数

**

程序功能:求二进制,十进制,八进制

创建人:蒲宇林

创建日期:2007年8月13日

**/

#include

void

two();

void

eight();

void

sixteen();

/**主函数**/

void

main()

{

int

select;

do

{

printf("0

-

退出,1

-

十进制转二进制,2

-

十进制转八进制,3

-

十进制转十六进制");

scanf("%d",select);

switch(select)

{

case

1

:

two();

break;

//十进制转二进制

case

2

:

eight();

break;

//十进制转八进制

case

3

:

sixteen();

break;

//十进制转十六进制

default

:

printf("您的输入有误,请重新输入!");

break;

}

if(select

==

0)

{

break;

}

}while(1);

}

void

two()

{

int

num,

i;

int

arr[20];

printf("\n请输入一个十进制数:");

scanf("%d",num);

for(

i

=

;

1

;

i++)

//转换为二进制并存入数组

{

arr[i]

=

num

%

2;

num

=

num

/

2;

if(num

==

0)

{

break;

}

}

printf("转换为二进制:");

//打印

for(;

i

=

;

i--

)

{

printf("%d",arr[i]);

}

printf("\n");

}

void

eight()

{

int

num,

i;

int

arr[20];

printf("\n请输入一个十进制数:");

scanf("%d",num);

for(

i

=

;

1

;

i++)

//转换为八进制并存入数组

{

arr[i]

=

num

%

8;

num

=

num

/

8;

if(num

==

0)

{

break;

}

}

printf("转换为八进制:");

//打印

for(;

i

=

;

i--

)

{

printf("%d",arr[i]);

}

printf("\n");

}

void

sixteen()

{

int

num,

i;

int

arr[20];

printf("\n请输入一个十进制数:");

scanf("%d",num);

for(

i

=

;

1

;

i++)

//转换为二进制并存入数组

{

arr[i]

=

num

%

16;

num

=

num

/

16;

if(num

==

0)

{

break;

}

}

printf("转换为十六进制:");

//打印

for(;

i

=

;

i--

)

{

switch(arr[i])

{

case

10

:

printf("a");

break;

case

11

:

printf("b");

break;

case

12

:

printf("c");

break;

case

13

:

printf("d");

break;

case

14

:

printf("e");

break;

case

15

:

printf("f");

break;

default

:

printf("%d",arr[i]);

}

}

printf("\n");

}

C语言调用函数编写把十进制整数n转换成十六进制怎么编程?

思路:十进制整数转换为十六进制整数采用"除16取余,逆序排列"法。

具体做法是:用16整除十进制整数,可以得到一个商和余数;再用16去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为十六进制数的低位有效位,后得到的余数作为十六进制数的高位有效位,依次排列起来。

参考代码:

#include "stdio.h" 

int main() 

int num,a[100],i=0,m=0; 

char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

scanf("%d",num); 

while(num0) 

a[i++]=num%16; 

num=num/16; 

printf("转化为十六进制的数为:"); 

for(i=i-1;i=0;i--)//倒序输出 

m=a[i];

printf("%c",hex[m]); 

printf("\n"); 

}

/*

运行结果:

17

转化为十六进制的数为:11

*/

在c语言中用最简单的方法把十进制转化为十六进制

代码如下:

#include "stdio.h" 

int main() 

int num=0;

int a[100]; 

int i=0; 

int m=0;

int yushu; 

char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

printf("请输入一个十进制整数:"); 

scanf("%d",num); 

while(num0) 

yushu=num%16; 

a[i++]=yushu; 

num=num/16; 

printf("转化为十六进制的数为:0x"); 

for(i=i-1;i=0;i--)//倒序输出 {

m=a[i];

printf("%c",hex[m]); 

printf("\n"); 

}

程序运行结果:

扩展资料

C语言中,十进制转换十六进制,可以先输入十进制整数,然后去拼十六进制,十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,只需把二进制除以16得到余数去上面定义的hex[16]数组进行取值接可以得到转换的数字。

参考资料:百度百科-十六进制


分享名称:c语言函数转换十六进制数 c语言十进制转化为十六进制
文章来源:http://bzwzjz.com/article/dooigeh.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 专业网站设计 手机网站制作 成都网站制作 成都网站建设 成都响应式网站建设公司 成都品牌网站设计 重庆电商网站建设 成都网站建设 响应式网站设计 重庆网站设计 成都网站建设 成都网站建设公司 成都做网站建设公司 成都网站建设 品牌网站建设 成都网站建设 达州网站设计 高端定制网站设计 高端网站建设 泸州网站建设 成都网站设计 成都网站建设