资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

C语言转为16进制函数 c语言将十进制数转换为16进制的函数

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

方法一:

成都创新互联公司长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为金城江企业提供专业的网站设计制作、成都网站设计金城江网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

#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进制数的函数

首先对于一个整数,无论是十进制还是十六进制,它的值是一定的。

所以,转换16进制和10进制原理是一样的,先求出转换后的值,然后再以十六进制的形式输出就行了。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

你不会是直接从网页里面复制就粘贴到编辑器里面吧?

那样不行的,你自己重新输入一下。或者先拷贝到文本文档里面,再从文本文档里面复制。从网页里面直接复制有特殊字符的。

还有,程序函数不能在主函数里面定义的。

#include stdio.h

int convert(char * str);

void main()

{

char str[20];

int result;

scanf("%s",str); //自己输入一个十六进制的串

result = convert(str);

printf("%0x",result);

}

int convert(char * str)

{

int i,sum = 0;

for(i = 0;str[i] != '\0';i++)

{

if(str[i]='0' str[i]='9')

sum += sum*16 + str[i]-'0';

else if(str[i]='f' str[i]='a')

sum += sum*16 + str[i]-'a'+1;

else if(str[i]='F' str[i]='A')

sum += sum*16 + str[i]-'A'+1;

}

return sum;

}

如何给一个C语言字符串转16进制数的函数?

多麻烦啊!

看好了:

#includestdio.h

int a;

char *str="1Af";

int main()

{

sscanf(str,"%x",a);//%x为读入16进制数,大小写均可。sscanf是从c字符串中读入变量。

printf("%i",a);

return 0;

}

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");

}

程序运行结果:

扩展资料:

进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。

举例:二进制数转换为十进制数

二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……

所以,设有一个二进制数:0110 0100,转换为10进制为:

下面是竖式:

0110 0100 换算成十进制

第0位 0 * 20 = 0

第1位 0 * 21 = 0

第2位 1 * 22 = 4

第3位 0 * 23 = 0

第4位 0 * 24 = 0

第5位 1 * 25 = 32

第6位 1 * 26 = 64

第7位 0 * 27 = 0

公式:第N位2(N)

---------------------------

100

用横式计算为:

0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1* 26 + 0 * 27 = 100

0乘以多少都是0,所以我们也可以直接跳过值为0的位:

1 * 22 + 1 * 25 +1*26 = 100

参考资料:

百度百科-进制转换

用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语言转为16进制函数 c语言将十进制数转换为16进制的函数
当前链接:http://www.cdkjz.cn/article/hjsoje.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220