C++多种方式进行进制转换

规定格式输出

printf("%05o\n",35);    //按八进制格式输出,保留5位高位补零
printf("%03d\n",35);    //按十进制格式输出,保留3位高位补零
printf("%05x\n",35);    //按十六进制格式输出,保留5位高位补零

也可以使用sscanf方法进行转换

sscanf(temp,"%x",&k);//将16进制字符串转换为10进制数

temp为字符串,中间为输出格式,最后一个参数进行值的接受

其实sscanf还有很多的用途,更多用法可以参考C++ sscanf()用法 - 小浩浩在此 - 博客园 (cnblogs.com)

其他进制转为10进制

自己手写

int Atoi(string s,int radix)    //s是给定的radix进制字符串
{
	int ans=0;
	for(int i=0;i<s.size();i++)
	{
		char t=s[i];
		if(t>='0'&&t<='9') ans=ans*radix+t-'0';
		else ans=ans*radix+t-'A'+10;
	}
		return ans;
}

10转其他进制

string intToA(int n,int radix)    //n是待转数字,radix是指定的进制
{
	string ans="";
	do{
		int t=n%radix;
		if(t>=0&&t<=9)	ans+=t+'0';
		else ans+=t-10+'A';
		n/=radix;
	}while(n!=0);	//使用do{}while()以防止输入为0的情况
	reverse(ans.begin(),ans.end());
	return ans;	
}

参考博客:C++中的各种进制转换函数汇总_vir_lee的博客-CSDN博客_c++进制转换

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值