精华内容
下载资源
问答
  • c++进制转换

    2021-07-03 15:40:55
    C/C++各种进制转换库函数 1. 任意2-36进制数转化为10进制数(strtol) #include <bits/stdc++.h> using namespace std; int main(int argc, char** argv) { char buffer[20]="11"; char *stop; int ...

    C/C++各种进制转换库函数

    1. 任意2-36进制数转化为10进制数(strtol)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(int argc, char** argv) {
        
        char buffer[20]="11";  
        char *stop;  
        int ans=strtol(buffer, &stop, 2);   //将八进制数1054转成十进制,后面均为非法字符
        printf("%d\n",ans);  
        printf("%s\n", stop);   
    	return 0;
    }
    

    2. 将10进制数转换为任意的n进制数,结果为char型(_itoa)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(int argc, char** argv) {
    	
    	int num, redix;
    	cin >> num >> redix;
    	char str[100];  
    	_itoa(num, str, redix);  //c++中一般用_itoa,用itoa也行,
    	printf("%s\n", str);  
    
    	return 0;
    }
    
    展开全文
  • C++进制转换(10进制→2~36进制)

    千次阅读 2020-02-19 20:53:17
    被除数除以除数,余数一定小于除数。 如果除数大于10,余数就有可能大于9,但表示的时候要输出字母表示。如16进制中"A"表示"10",“F"表示"15”。如36进制中“Z”表示"35"。... //n表示要转换的数...

    被除数除以除数,余数一定小于除数。

    如果除数大于10,余数就有可能大于9,但表示的时候要输出字母表示。如16进制中"A"表示"10",“F"表示"15”。如36进制中“Z”表示"35"。

    运行结果:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    代码如下:

    #include <iostream>
    using namespace std;
    
    int main(){
    	//a,b,c分别表示被除数、商、余
    	//n表示要转换的数
    	//m表示目标进制 
    	int n, m, a, b, c[1000];	
    	
    	cout << "请输入一个十进制数:";
    	cin >> n;
    	a = n;
    	
    	cout << "你想将这个数转化为几进制(最小:2,最大:36):";
    	cin >> m;
    	if(m < 2 || m > 36){
    		cout << "进制错误!";
    		return 0;
    	}
    	
    	for(int i = 0; i < 1000; i++){
    		c[i] = m;	//初始化1个不可能的数,如8进制不存在8 
    	}
    	
    	int count;
    	for(count = 0; b != 0; count++){
    		b = a / m;
    		c[count] = a % m;
    		a = b;
    	}
    	
    	cout << "对应的" << m << "进制数:";
    	for(int i = count - 1; i >= 0; i--){	//不用从c[999]开始
    		if(c[i] != m){
    			if(c[i] < 10){
    				cout << c[i];	//"0"到"9" 
    			}
    			else{
    				cout << (char)(c[i] + 55);	//"A"到"Z" ,c[i]为10,ASCII表中65为"A" 
    			}
    		}
    	}
    	return 0;
    }
    


    氷鸢鸢鸢
    2020.2.19

    展开全文
  • c/c++进制转换方法汇总(含全部代码)

    万次阅读 多人点赞 2019-02-24 17:51:16
    进制转换方法汇总表 原进制 转换进制 方法1 方法2 方法3 方法4 十进制 二进制 bitset指定格式输出 除留余数法 itoa 十进制 八进制 oct/%o指定格式输出 流 除留余数...
    进制转换方法汇总表
    原进制转换进制方法1方法2方法3方法4
    十进制二进制bitset指定格式输出 除留余数法itoa
    十进制八进制oct/%o指定格式输出除留余数法itoa
    十进制十六进制hex/%x指定格式输出除留余数法itoa
    十进制其他进制  除留余数法itoa
    二进制八进制三位一组   
    二进制十进制按权展开  strtol
    二进制十六进制四位一组   
    八进制二进制一位换三 除留余数法 
    八进制十进制按权展开 strtol
    八进制十六进制   
    十六进制二进制一位换四 除留余数法 
    十六进制八进制   
    十六进制十进制按权展开 strtol

    基本操作函数:

    Atoi(string &S, int R) 任意进制转十进制(All Radix to Int) 参数:任意进制字符串 进制R 作用:利用按权展开加和,返回十进制
    Itoa(int Num,int R) 十进制转任意进制(Int to All Radix)参数:十进制数Num,进制R 作用:利用除留余数法,返回逆序的余数,即返回所要转换的进制数

    功能实现函数:

    ToAll() 十进制转任意进制 调用函数Itoa,自带的itoa
    ToDecimal(string &S) 任意进制转十进制函数 调用Atoi函数,strtol函数
    ZhiDing() 作用:利用std的hex dec 以及 bitset,c语言的%o,%x
    Stream() 作用:利用sstream头文件将数按某进制读入流,输出流

    1.任意进制转十进制

    【分析】按权展开,求和即可。例如,二进制数110,即4+2+0=6;另外,不想自己写的话,有strtol函数(百度百科)。

    long int strtol(const char *nptr,char **endptr,int base);参数:字符串,非法字符指针,字符串中的进制

    考虑的很详细,字符串中含有非法的字符(,.*等)时还能停止转换,并返回指针。

    2.十进制转任意进制

    【分析】除留余数法,逆序输出余数即可。另外,如果自己不想写的话,有itoa函数。

    string itoa(int x,char *string,int jz);参数:想要转换的数,转换结果字符串,转换结果的进制

    3.指定格式与流

    【分析】主要是八进制、十进制和十六进制。对c来说是%o%d,%x;对c++来说是oct,dec,hex。作者感觉所谓的指定格式是输入输出流,sstream的stringstream类是字符串流,本质上应该是差不多的,就写在了一起。学的不深,没有看标准库中类的源代码,请大神指点。

    4.二、八、十六之间的转换

    【分析】表格里面的一位换四,三位一组之类的是指通过二进制。例如,二进制与八进制进行转换,二进制的110就是八进制的6。反过来,八进制转为二进制,只需要一位转换为三位,6换为110即可。由于也不多,大家都很熟悉,没必要用除留余数法,可以自己写个映射之类的。至于八进制与十六进制的转换,可以利用二进制或十进制作为跳板。(这个代码里面没有,读者可以尝试写一下)

    5.全部代码

    /*
    Project: 进制转换(Radix)
    Date:    2019/02/24
    Author:  Frank Yu
    基本操作函数:
    Atoi(string &S, int R) 任意进制转十进制(All Radix to Int) 参数:任意进制字符串 进制R 作用:利用按权展开加和,返回十进制
    Itoa(int Num,int R) 十进制转任意进制(Int to All Radix)参数:十进制数Num,进制R 作用:利用除留余数法,返回逆序的余数,即返回所要转换的进制数
    功能实现函数:
    ToAll() 十进制转任意进制 调用函数Itoa
    ToDecimal(string &S) 任意进制转十进制函数 调用Atoi函数,strtol函数
    ZhiDing() 作用:利用std的hex dec 以及 bitset,c语言的%o,%x
    Stream() 作用:利用sstream头文件将数按某进制读入流,输出流
    */
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<string>
    #include<set>
    #include<list>
    #include<vector>
    #include<map>
    #include<iterator>
    #include<algorithm>
    #include<bitset>
    #include<sstream>
    #include<iostream>
    using namespace std;
    #define Max 100
    //进制权值
    int power(int R,int turn)
    {
    	int ans = 1;
    	while (turn--)
    	{
    		ans = ans*R;
    	}
    	return ans;
    }
    //**************************************基本操作函数**********************************//
    //任意进制转十进制(All Radix to Int) 参数:任意进制字符串 进制R 作用:利用按权展开加和,返回十进制
    long int Atoi(string &S, int R)
    {
    	long int ans = 0;
    	for (int i=0;i < S.size();i++)//按权展开
    	{
    		ans += (S[i] - '0') * power(R, S.size() - i - 1);
    	}
    	/* 网上代码 不理解(已了解,举例,十六进制时t可能为f,那么f-'a'=5,再加10就是15了)	
    	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;
    }
    //十进制转任意进制(Int to All Radix)参数:十进制数Num,进制R 作用:利用除留余数法,返回逆序的余数,即返回所要转换的进制数
    string Itoa(int Num,int R)
    {
      string remain="";
      int temp;
      do {
       temp = Num%R;//取余
       Num /= R;
       if (temp >= 10)
    	   remain += temp - 10 + 'A';//任意进制为大于基数大于10的进制 例如,十六进制
       else remain += temp + '0';
      } while (Num);
      reverse(remain.begin(),remain.end());//逆序
      return remain;
    }
    //**************************************功能实现函数**********************************//
    //菜单
    void menu()
    {
    	cout << "************1.十进制转任意进制(除留余数)       2.任意进制转为十进制(按权展开)****" << endl;
    	cout << "************3.十进制指定格式输出(二、八、十六)  4.利用流****************************" << endl;
    	cout << "************5.退出" << endl;
    }
    void menu1()
    {
    	cout << "************1.十进制转二进制         2.十进制转八进制****" << endl;
    	cout << "************3.十进制转十六进制       4.退出**************" << endl;
    }
    void menu2()
    {
    	cout << "************1.十进制转八进制         2.十进制转十六进制**************" << endl;
    	cout << "************3.八进制转十进制         4.十六进制转十进制**************" << endl;
    	cout << "************5.退出" << endl;
    }
    //十进制转任意进制 调用函数Itoa,自带的itoa
    void ToAll()
    {
    	int num, R;char str[Max];
    	cout << "请输入数和进制:" << endl;
    	cin >> num >> R;
    	cout << num << "转换为"<<R<<"进制为:" << Itoa(num,R) << endl;
    	cout << "利用itoa函数:" <<itoa(num,str,R)<<endl;
    }
    //任意进制转十进制函数 调用Atoi函数,strtol函数
    void ToDecimal(string &S)
    {
    	int R;
    	cout << "请输入数和进制:" << endl;
    	cin >>S>>R;
    	cout <<S<<"转换为十进制为:"<<Atoi(S, R)<<endl;
    	//利用strtol函数 long int strtol(const char *nptr,char **endptr,int base)
    	//参数,字符串,非法字符指针,字符串中的进制
    	char nptr[Max],*stop;
    	strcpy(nptr,S.c_str());//string类型转换为char
    	cout<<S << "转换为十进制为(利用strtol函数):" << strtol(nptr,&stop,R) << endl;
    }
    //作用:利用std的hex dec 以及 bitset,c语言的%o,%x
    void ZhiDing()
    {
    	int num;int choice = 0;
    	 cout << "请输入十进制数:" << endl;
    	 cin >> num;
    	while (1)
    	{
    		menu1();
    		printf("请输入菜单序号:\n");
    		scanf("%d", &choice);
    		if (4 == choice) break;
    		switch (choice)
    		{
    		case 1:cout << num <<"转为二进制(利用bitset):"<<bitset<8>(num)<<endl;break;
    		case 2: {
    			      cout << num << "转为八进制(利用oct):" << oct << num << endl;
    				  printf("转为八进制(利用o):%o\n",num);//8位,高位补0
    		         }break;
    		case 3: {
    			       cout << num << "转为十六进制:" << hex << num << endl;
    				   printf("转为十六进制(利用x):%x\n", num);
    		        }break;
    		default:printf("输入错误!!!\n");break;
    		}
    	}
    }
    //作用:利用sstream头文件将数按某进制读入流,输出流
    void Stream()
    {
    	string s;int choice = 0;
    	stringstream ss;int num;
    	while (1)
    	{
    		menu2();
    		printf("请输入菜单序号:\n");
    		scanf("%d", &choice);
    		if (5 == choice) break;
    		switch (choice)
    		{
    		case 1: {
    			cout << "请输入一个数:" << endl;
    			cin >> num;
    			ss.clear();//清空一下,防止出错
    			ss << oct << num;//十进制转为八进制读入流中
    			ss >> s;//转换的八进制数放入字符串s中
    			cout << num << "转为八进制(利用流):" << s << endl;
    		}break;
    		case 2: {
    			cout << "请输入一个数:" << endl;
    			cin >> num;
    			ss.clear();//清空一下,防止出错
    			ss << hex << num;//十进制转为十六进制读入流中
    			ss >> s;//转换的十六进制数放入字符串s中
    			cout << num << "转为十六进制(利用流):" << s << endl;
    		}break;
    		case 3: {
    			cout << "请输入一个数:" << endl;
    			cin >> s;
    			ss.clear();//清空一下,防止出错
    			ss << oct << s;//将s以八进制形式读入流中
    			ss >> num;//以十进制输入到num中
    			cout << s << "转为十进制(利用流):" << num << endl;
    		}break;
    		case 4: {
    			cout << "请输入一个数:" << endl;
    			cin >> s;
    			ss.clear();//清空一下,防止出错
    			ss << hex << s;//将s以八进制形式读入流中
    			ss >> num;//以十进制输入到num中
    			cout << s << "转为十进制(利用流):" << num << endl;
    		}break;
    		default:printf("输入错误!!!\n");break;
    		}
    	}
    }
    //主函数
    int main()
    {
    	int choice = 0;
    	string S;
    	while (1)
    	{
    		menu();
    		printf("请输入菜单序号:\n");
    		scanf("%d", &choice);
    		if (5 == choice) break;
    		switch (choice)
    		{
    		case 1:ToAll();break;
    		case 2:ToDecimal(S);break;
    		case 3:ZhiDing();break;
    		case 4:Stream();break;
    		default:printf("输入错误!!!\n");break;
    		}
    	}
    	return 0;
    }

    更多数据结构与算法实现:数据结构(严蔚敏版)与算法的实现(含全部代码)

    有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。

     

     

    展开全文
  • 进制的转换 stoi函数(<string>)与itoa函数(<stdlib.h>) /* 原型:int stoi(string str, size_t* idx = 0, int base = 10...功能:把一个字符串按照base进制转换成数字,至str的第一个非法字符结束 */ //...

    进制的转换

    stoi函数(<string>)与itoa函数(<stdlib.h>)

    /*
    原型:int stoi(string str, size_t* idx = 0, int base = 10);
    str:欲转换的数据;idx:目标字符串的起始转换地址;base:待转换数据的进制。
    功能:把一个字符串按照base进制转换成数字,至str的第一个非法字符结束
    */
    //其余进制转十进制
    string str = "0A";//16->10
    0int val = stoi(str,0,16);// val=10
    
    /*
    原型:char* itoa(int value, char *str,int base);
    value:欲转换的数字;str:目标字符串的地址;base:将数字转换成base进制的字符串。
    功能:把一个数字转换成base进制的字符串。
    */
    //十进制转其余进制
    //注意:itoa非标准函数
    int num = 125;//10->16
    char str[10];
    itoa(num, str, 16);//str = "7d"
    

    stringstream类(<sstream>)

    //十进制转十六进制
    stringstream ss;
    int decimal = 52;
    ss << hex << decimal;// << 读入到流中
    int conhex = stoi(ss.str());//
    ss.clear();
    
    //十六进制转十进制
    stringstream ss1;
    string hex_test = "A5";
    int decimal2;
    ss1.str(hex_test);// ss1 >> hex_test;
    sst >> hex >> decimal2;// >> 从流中读出
    ss1.clear();
    

    sprintf函数(<stdio.h>)

    C语言风格;

    展开全文
  • C++进制转换函数

    千次阅读 2019-02-18 22:09:02
    其他进制转换10进制——》strtol函数 头文件cstdlib C 库函数 long int strtol(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int ...
  • 1.顺序栈不多说,比较常用的方法... //十六进制转十进制 int value; string hex_test = str; stringstream ss1; ss1.str(hex_test); ss1 >> hex >> value; //十进制转八进制 stringstream ss;...
  • c/c++进制转换 转中文

    2017-06-22 17:09:26
    c/c++进制转换 转中文 16进制 2进制 10进制 相互转换........................................................................
  • c++进制转换函数

    2018-08-07 10:18:56
    它的功能是将一个任意1-36进制数转化为10进制数,返回是long int型。 函数为long int strtol(const char *nptr, char **endptr, int base) base是要转化的数的进制,非法字符会赋值给endptr,nptr是要转化的字符,...
  • 进制转二进制:   //十进制转二进制 #include&lt;iostream&gt; using namespace std; void printbinary(const unsigned int val) { for(int i = 16; i &gt;= 0; i--) { if(val &amp; (1 ...
  • C++进制转换.cpp

    2021-11-26 16:42:48
    c++实现十进制转化为二进制,八进制,十六进制
  • C++进制转换

    2014-11-04 10:43:09
    C++实现2进制和16进制之间的转换,2进制转16进制,16进制转2进制
  • (五)C++进制转换问题

    2018-11-23 14:54:00
    进制转换问题 建立顺序栈或链栈,编写程序实现十进制数到二进制数的转换。 输入 输入只有一行,就是十进制整数。 输出 转换后的二进制数。 样例输入 10 样例输出 1010 // 11进制转换问题.cpp: 定义...
  • C++语言实现带小数的任意进制转换,使用了数据结构中的栈和队列,在VC++6.0上编译运行通过。对于学习C++和数据结构有一定的参考意义!
  • C++进制转换相关习题

    2020-12-07 12:58:36
    进制转换十进制->八进制,十六进制十六进制->十进制十进制->六进制 十进制->八进制,十六进制 题目描述: 十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示...
  • C++任意进制转换

    2014-12-04 09:54:46
    我的其他资源都是免费的,是对于c语言初学者的帮助比较大的,其中有单片机,ARM,数据结构,window编程,MFC编程,自己编写的小游戏。
  • c++进制转换十进制 double power(double x,int n) { double v=1; while(n--) { v=v*x; } return v; }
  • 源代码来的,经过运行唔错的,想交作业或者懒得去计算的可以下载去玩玩
  • C++实现各进制转换

    2014-04-27 20:16:55
    c++实现二进制到八进制,十进制,十六进制转换
  • void change16_2() { printf("十六进制->二进制\n"); int i,a,b,c,d,k; int x[3]; char m[3]={0,0,0},n[3];...进制转换怎么不对,如果m字符串 输入A 就会输出两次“输入错误”,这是为什么,这里的输入要怎么改
  • c / c++ 任意进制转换函数

    千次阅读 2019-08-02 17:46:25
    c/c++进制转换函数实现任意进制数转任意进制数 注意:此函数不依赖任何头文件 多函数实现:(11进制及以上有BUG) 调用aikzp(待转换数字,待转换进制,生成进制)返回生成指定进制数字 int rev(int a,int od) {//颠倒...
  • 头文件iostream、名字空间std提供控制符hex、dec(默认,也就是任何数值自动转换进制)、oct,使用控制符后数字自动转换相应进制,使用方法:cout&lt;&lt;hex...
  • 16进制与10进制相互转换的代码,10转16进制,16转10进制,包含源文件与头文件,直接移植后可以使用。
  • 对于一个P进制的数字,若要转化为Q进制,则需要两部: 第一步: 将P进制的数字转化为10进制 y=a1*p(n-1)+a2*p(n-2)+....+an-1p+an 如何实现? int x,p; int y=0,pro=1;... }//将 十进制转换为q进制,除基
  • 规定格式输出 printf("%05o\n",35); //按八进制格式输出,保留5位高位补零 ...//将16进制字符串转换为10进制数 temp为字符串,中间为输出格式,最后一个参数进行值的接受 其实sscanf还有很多的用途,更多用法可以
  • 十进制转16,8,2,c++ 进制转换成16,8,2,两种方法,vs2008
  • c++实现代码36进制与十进制之间进行转换,标准代码,亲自验证过,可正常运行,直接使用即可
  • C++实现数字进制转换器 刷题中遇到一些进制转化的题目,由于从十进制转化为其他进制(十以内)方法完全相同,因此总结为一个进制转换器作为练习,当作一个练习记录。代码没有经过优化,请诸位大佬轻喷。 十进制转...
  • c++进制转换n进制

    2021-06-15 10:33:43
    利用这段代码可以实现10进制转换为36进制下的任意进制。 代码的思路很简单,利用一段函数,将每一次取余得到的结果存入数组,最后利用for循环和switch语句将得到的数组反响输出,就得到了转换后的结果。 以下是代码...
  • 文章目录(1)其他进制转换为十进制原理代码(2)十进制转换为其他进制原理代码(3)总结 (1)其他进制转换为十进制 原理 P进制x上的每一个位对十进制而言表达的含义都不同 从右到左,各表示个位,P位,P2位,…,Pn位 例如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 143,019
精华内容 57,207
关键字:

c++进制转换

c++ 订阅