字符串与数字之间的转化、进制的转化

#include <iostream>
using namespace std;
/*
a、将一个字符串转换为数字,返回值用来校验转换是否成功
bool strtoi(const char *, int &);
b、将一个数字通过指定进制按位逆序(直接覆盖原数)
void sysReverse(int &, int);*/

bool strtoi(const char *src, int &res)
{
	if (!src)//判断非空
	{
		return false;
	}
	while (*src <= ' ')//跳过不可见的字符
	{
		src++;
	}
	int flag = 1;
	if (*src == '-')
	{
		flag = -1;
		src++;
	}
	if (*src > '9' || *src < '0')
	{
		return false;
	}
	int sum = 0, tmp;
	int i;
	for (i = 0; src[i] <='9' && src[i]>='0'; i++)
	{
		tmp = src[i] - '0';
		sum = sum * 10 + tmp;
	}
	res = sum * flag;

	return true;
}
void sysReverse(int &num, int hex)
{
	int i;
	int tmp, sum = 0;
	for (i = num; i; i /= hex)
	{
		tmp = i % hex;
		sum = sum * hex + tmp;
	}
	num = sum;
}


int main()
{
	int res;
	int num = 25;
	sysReverse(num, 2);
	if (strtoi("\n\n\n\n\n\n\n\n      -127", res))
	{
		cout << res << endl;
	}
	else
	{
		cout << "fail\n";
	}

	return 0;
}

这两个代码重要的注意点就是两个函数中的核心遍历for循环,
固定的套路,背过就行了

1.以下代码就是字符串转化为数字的套路循环

for (i = 0; src[i] <='9' && src[i]>='0'; i++)
	{
		tmp = src[i] - '0';
		sum = sum * 10 + tmp;
	}

2.以下就是进制转换的套路循环

for (i = num; i; i /= hex)
	{
		tmp = i % hex;
		sum = sum * hex + tmp;
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值