我是靠谱客的博主 紧张棉花糖,最近开发中收集的这篇文章主要介绍string转不同进制数、十进制数转不同进制字符串,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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++ 各种进制的表示方法/ 进制前缀

最后

以上就是紧张棉花糖为你收集整理的string转不同进制数、十进制数转不同进制字符串的全部内容,希望文章能够帮你解决string转不同进制数、十进制数转不同进制字符串所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部