string转不同进制数、十进制数转不同进制字符串

本文详细介绍了如何使用C++的strtol函数进行字符串到不同进制数的转换,并通过stringstream演示了十进制数如何转换为16进制和8进制字符串。还展示了itoa和stringstream在字符串表示法之间的转换技巧。
摘要由CSDN通过智能技术生成

1、str转不同进制数:
1.1、strtol

int main() 
{      
	string abc = "01011101";     
	long num_two_radix = strtol(abc.c_str(), nullptr, 2);     
	cout << num_two_radix << endl; // num_two_radix = 93; num_two_radix = 0b01011101;      
	long num_ten_radix = strtol(abc.c_str(), nullptr, 10);      
	cout << num_ten_radix << endl; // num_two_radix = 01011101;      
	return 0; 
}  

1.2、stringstream

int main() 
{      
	string s = "20";     
	int res = 0;      
	stringstream ss;      
	ss << hex << s;  //将字符串当作16进制数读入      
	ss >> res;  //输出为十进制数      
	cout << res << endl;      
	return 0; 
}

2、十进制数转不同进制字符串:
2.1、itoa
2.1.1、函数原型:

char*  itoa(int value, char * str, int base);    

2.1.2、各参数含义:
value:要转换成字符串的int值;
str:用于存储转换后字符串的数组地址;
base:用于将值表示为字符串的数字基数,2、8、10、16等。

2.1.3、应用:

int main()  
{
	int i = 93;
	char buffer[33];
	itoa(i, buffer, 10);  // buffer = "93"    
	itoa(i, buffer, 16);  // buffer = "5D"   
	itoa(i, buffer, 2);  // buffer = "01011101"  
	return 0; 
}    

2.2、stringstream

int main() 
{   
	string num_ten_radix;    
	string num_eight_radix;  
	int a = 93;  
	stringstream ss; 
	ss << oct << a;  //10进制转成八进制读入流中,再以字符串输出    
	ss >> num_ten_radix;  
	cout << num_ten_radix << endl; //输出:135    
	ss.clear(); // 不清空可能会出错。 
	ss << hex << a; // 10进制转成十六进制读入流中,再以字符串输出
	ss >> num_eight_radix;  
	cout << num_eight_radix << endl;  //输出:5D  
	return 0;   
}

参考资料:
1、推荐:C++中的各种进制转换函数汇总
2、cplusplus:itoa
3、【类型转换】C++中char、char*、int、string相互转换函数及string转不同进制数函数
4、C/C++ 各种进制的表示方法/ 进制前缀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值