ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C语言程序实现:十六进制转换为八进制(绝对用心仔细)

2019-09-07 13:36:14  阅读:567  来源: 互联网

标签:十六进制 程序实现 ret int len 八进制 十进制


题目

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
分析:

  1. 将十六进制是转换为十进制
  2. 再将十进制转换为八进制
    十六进制到十进制的转换代码:
int Sixteen_Ten(char *p)
{
	int k =0;
	int i =0;
	int sum=0;
	int len = strlen(p);
	for(i = len-1;i >= 0;i--)
	{
		if(p[i] >= 'A'  && p[i] <= 'F')
		{
			sum += (p[i] - 'A'+10)*(int)pow(16*1.0,k++*1.0);     //double pow( double x, double y );
		}
		else
		{
			sum += (p[i] - '0')*(int)pow(16*1.0,k++*1.0);
		}
	}  
	return sum;
}

将十进制转换为八进制代码如下:

void Ten_Eight(int num)
{
	int ret[99] = {0};
	int i=0;
	int k = 0;
	while(num)
	{
		ret[k++] = num%8;
		num /= 8;
	}

	PrintNum(ret,k-1);
}

输出函数:

void PrintNum(int *ret,int len)
{
	int i =0;
	printf("转化的八进制数为:");
	for(i = len;i >= 0;i--)
	{
		printf("%d",ret[i]);
	}
	printf("\n");
}

完整代码呈上:

测试结果呈上:

标签:十六进制,程序实现,ret,int,len,八进制,十进制
来源: https://blog.csdn.net/Backpace_/article/details/100594419

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有