C语言实现16进制转为10进制

35 篇文章 0 订阅
31 篇文章 1 订阅
#include <stdio.h>
#include <string.h>
#include <math.h>
void conver(char arr[])
{
	int i, j = 0, k = 0, sum = 0, n = strlen(arr);
	int num[100];
	for (i = 0; i < n; i++)
	{
		switch (arr[i])
		{
		case 'A':num[j++] = 10;
			break;
		case 'B':num[j++] = 11;
			break;
		case 'C':num[j++] = 12;
			break;
		case 'D':num[j++] = 13;
			break;
		case 'E':num[j++] = 14;
			break;
		case 'F':num[j++] = 15;
			break;
		default:num[j++] = (int)(arr[i] - '0');
			break;
		}
	}
	for (i = n - 1; i >= 0; i--)
		sum += num[i] * pow(16, n - 1 - i);
	printf("转换结果:\n%d", sum);
}
int main()
{
	char arr[10];
	printf("请输入十六进制数:\n");
	gets(arr);
	conver(arr);
	return 0;
}

这个是C语言的函数,其实C++已经有这种函数的封装了,那就是stoi,其中第一项是需要变换的字符串,第二项是起始索引,第三项是是进制可以 8、16、10.

inline int stoi(const string& _Str, size_t *_Idx = nullptr,
	int _Base = 10)
	{	// convert string to int
	int& _Errno_ref = errno;	// Nonzero cost, pay it once
	const char *_Ptr = _Str.c_str();
	char *_Eptr;
	_Errno_ref = 0;
	const long _Ans = _CSTD strtol(_Ptr, &_Eptr, _Base);

	if (_Ptr == _Eptr)
		_Xinvalid_argument("invalid stoi argument");
	if (_Errno_ref == ERANGE || _Ans < INT_MIN || INT_MAX < _Ans)
		_Xout_of_range("stoi argument out of range");
	if (_Idx != nullptr)
		*_Idx = (size_t)(_Eptr - _Ptr);
	return ((int)_Ans);
	}
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值