C++ 数制转换

 一、十进制 转换成 n 进制

      这里要求 1< n <= 9

      转换函数实现如下

 

     //将十进制 dec 转换成 n 进制,结果存在 other中,other在外部分配内存 void Decimal_to_Other(int dec, char *other, int n) { //1 < n <= 9 int i=0; int dec_copy = dec; char* tmpArray = new char[64]; while(dec_copy != 0){ tmpArray[i] = dec_copy%n+'0'; dec_copy /= n; i++; } //n进制的串的高位 保存在 tmpArray的地位, //如 6,二进制保存为tmpArray[0~2] = {0,1,1} int len = i; //n进制串长 for(i=0;i<len;i++){ //下面将tmpArray颠倒,存在other中 other[i] = tmpArray[len-i-1]; } //other[0~2]= {1,1,0} 这就是结果 other[len] = '/0'; delete[] tmpArray; }

 

调用如下:

CString szNumber; char* bin = new char[64]; //转化成二进制 Decimal_to_Other(m_Decimal,bin,2); szNumber.Format("%s",bin); AfxMessageBox(szNumber); char* octal = new char[64]; //转化成八进制 Decimal_to_Other(m_Decimal,octal,8); szNumber.Format("%s",octal); AfxMessageBox(szNumber);

 

二、十进制 转换成 十六进制

        转换函数如下

//hex 在外部分配空间 void Decimal_to_Hex(int dec, char *hex) { int i=0,flag; int dec_copy = dec; char* tmpArray = new char[64]; while(dec_copy != 0){ flag = dec_copy%16; switch(flag){ case 10: tmpArray[i] = 'A'; break; case 11: tmpArray[i] = 'B'; break; case 12: tmpArray[i] = 'C'; break; case 13: tmpArray[i] = 'D'; break; case 14: tmpArray[i] = 'E'; break; case 15: tmpArray[i] = 'F'; break; default: tmpArray[i] = flag+'0'; break; } dec_copy /= 16; i++; } int len = i; //n进制串长 for(i=0;i<len;i++){ hex[i] = tmpArray[len-i-1]; } hex[len] = '/0'; delete[] tmpArray; }

 

调用如下:

CString szNumber; char* hex = new char[64]; //转化成十六进制 Decimal_to_Hex(m_Decimal,hex); szNumber.Format("%s",hex); AfxMessageBox(szNumber);

 

 

三、二进制 转换成 十进制

 

int Binary_to_Decimal(CString szBin){ int len = szBin.GetLength(); //二进制串长 char* str = new char[len]; //存放串 double result = 0.0; //结果 strcpy(str,szBin.GetBuffer(0)); for(int i=0;i<len;i++){ if(str[i] == '1'){ result += pow(2,len-i-1); //计算 2 的 len-i 次方,并加入到最终结果中 continue; } else if(str[i] == '0'){ } else{ AfxMessageBox("输入二进制串有误!"); return 0; } } return (int)result; }

 

调用如下:

CString szBinary = "101101101"; int decimal; CString szDecimal; decimal = Binary_to_Decimal(szBinary); szDecimal.Format("十进制 结果为 %d",decimal); AfxMessageBox(szDecimal);

 

四、八进制 转换成 十进制

int Octal_to_Decimal(CString szOct){ int len = szOct.GetLength(); //串长 char* str = new char[len]; //存放串 double result = 0.0; //结果 int nOct; strcpy(str,szOct.GetBuffer(0)); for(int i=0;i<len;i++){ if(str[i] == '0'){ nOct = 0; } else if(str[i] == '1'){ nOct = 1; } else if(str[i] == '2'){ nOct = 2; } else if(str[i] == '3'){ nOct = 3; } else if(str[i] == '4'){ nOct = 4; } else if(str[i] == '5'){ nOct = 5; } else if(str[i] == '6'){ nOct = 6; } else if(str[i] == '7'){ nOct = 7; } else{ AfxMessageBox("输入八进制串有误!"); return 0; } result += (nOct*pow(8,len-i-1)); // CString msg;msg.Format("nOct = %d pow = %f result = %f",nOct,pow(8,len-i-1),result); // AfxMessageBox(msg); } // delete[] str; return (int)result; }

调用如下:

CString szOctal = "1721"; int decimal; CString szDecimal; decimal = Octal_to_Decimal(szOctal); szDecimal.Format("十进制 结果为 %d",decimal); AfxMessageBox(szDecimal);

 

 

五、十六进制 转换成 十进制

int Hex_to_Decimal(CString szHex){ int len = szHex.GetLength(); //串长 char* str = new char[len]; //存放串 double result = 0.0; //结果 int nHex; strcpy(str,szHex.GetBuffer(0)); for(int i=0;i<len;i++){ if(str[i] == '0'){ nHex = 0; } else if(str[i] == '1'){ nHex = 1; } else if(str[i] == '2'){ nHex = 2; } else if(str[i] == '3'){ nHex = 3; } else if(str[i] == '4'){ nHex = 4; } else if(str[i] == '5'){ nHex = 5; } else if(str[i] == '6'){ nHex = 6; } else if(str[i] == '7'){ nHex = 7; } else if(str[i] == '8'){ nHex = 8; } else if(str[i] == '9'){ nHex = 9; } else if(str[i] == 'A'){ nHex = 10; } else if(str[i] == 'B'){ nHex = 11; } else if(str[i] == 'C'){ nHex = 12; } else if(str[i] == 'D'){ nHex = 13; } else if(str[i] == 'E'){ nHex = 14; } else if(str[i] == 'F'){ nHex = 15; } else{ AfxMessageBox("输入十六进制串有误!"); return 0; } result += (nHex*pow(16,len-i-1)); } return (int)result; }

 

调用如下:

CString szHex = "1A2B"; int decimal; CString szDecimal; decimal = Hex_to_Decimal(szHex); szDecimal.Format("十进制 结果为 %d",decimal); AfxMessageBox(szDecimal);

 

六、利用栈实现

//《数据结构 c语言版》(严蔚敏) P48 void conversion(int N){ InistStack(S); scanf("%d",dec); //从屏幕读取一个十进制 while(dec != 0){ //转换 Push(S,dec%N); dec /= N; } while(!StackEmpty(S)){ //显示结果 Pop(S,e); printf("%d",e); } }

 

 

PS:我实现了一个数值转化的小工具,大家可以下载使用。

  http://download.csdn.net/source/2869264

转载于:https://www.cnblogs.com/JarvisChu/archive/2010/11/28/2752521.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机二级C语言考的函数,【帮考网】2012计算机等级二级考试C语言:函数递归...

一、栈在说函数递归的时候&#xff0c;顺便说一下栈的概念。栈是一个后进先出的压入(push)和弹出(pop)式数据结构。在程序运行时&#xff0c;系统每次向栈中压入一个对象&#xff0c;然后栈指针向下移动一个位置。当系统从栈中弹出一个对象时&#xff0c;最近进栈的对象将被弹出…

自我总结篇之vue的组件通信(父传子 子传父 非父子)

一&#xff1a;父传子 父组件代码如下&#xff1a; <template><div class"father"><child :messagemessage :message2message2></child> </div> </template> <script> import child from /components/child.vue export de…

Window Server 2008中开启Window Media Player功能

Window Server 2008中开启Window Media Player功能 服务器管理器 功能 优质Windows音频视频体验 打勾 安装 其它功能有&#xff1a; 桌面休验 等.... the end! 转载于:https://www.cnblogs.com/sqlite3/archive/2010/12/02/2566887.html

c语言数据结构kmp中next计算,数据结构——关于KMP算法中next函数的详细解析

以前看到数据结构中字符串的模式匹配时&#xff0c;花了半天的时间&#xff0c;才把KMP算法中的next函数整明白了&#xff0c;结果过了几天在看到这时&#xff0c;只记得next[j1]next[j]1&#xff0c;但是有时候能套公式正确算出&#xff0c;有时候就算不对&#xff0c;因此今天…

浅谈“微服务”

微服务概述 1.1 易于扩展 1.2 部署简单 1.3 技术异构性 数据库的服务化切分 2.1 什么是“分库分表”&#xff1f; 2.2 数据库扩展的几种方式 2.3 分库分表的几种方式 2.4 引入分库分表中间件后面临的问题 2.5 现有分库分表中间件的横向对比 微服务架构中的分布式事务 3.1 什么…

liigo:爱可视70平板电脑使用感受,遗憾与满足并存

我想大部分人来这里&#xff0c;不是想听美言的。许多资料、宣传性文章、评测、视频等等&#xff0c;网络上已经有很多了&#xff08;其中外文占很大比例&#xff09;。 我想大部分人来这里&#xff0c;是想听真正的使用感受的。我想&#xff0c;我这里提到的许多内容&#xff…

c语言 拓补排序源代码,拓扑排序C语言代码

#include#include#include#include//----------------公共的-----------------#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2//---------------------------------------//*************栈的初始大小和增量*************…

visual studio 正则表达式 查找与替换文本

好多时候想要重构一些代码&#xff0c;但是修改起来发现很麻烦&#xff0c;因为简单的文本替换不能满足需求&#xff0c;这时候就要借助ide的力量了。还好visual studio 2010支持正则表达式查找和替换。如下图所示&#xff1a; document.all.domElementA.style.visibility hid…

51 Python - 装饰器 参数化装饰器——装饰器更通用

05参数化装饰器——装饰器更通用 参数化装饰器如何理解&#xff0c;简单理解就是让装饰器可以通用。场景举例&#xff0c;现在有个需求要改某一段文字&#xff0c;既要加<P>标签&#xff0c;又要加<B>&#xff0c;还有加<Div>。是不是意味着需要定义多个装饰…

手机android怎么开机画面,Android使用BroadcastReceiver实现手机开机之后显示画面的功能...

本文实例讲述了Android使用BroadcastReceiver实现手机开机之后显示画面的功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;在此例中介绍了怎样使用BroadcastRececiver。使用BroadcastReceiver需要继承这个类&#xff0c;并且重写public void onReceiver(Context co…

[html] HTML采用的是RGB颜色还是CMYK颜色?为什么?

[html] HTML采用的是RGB颜色还是CMYK颜色&#xff1f;为什么&#xff1f; 用在电脑或者手机上显示的大部分都是RGB&#xff0c;用于需要印刷的都用CMYK 并且不同的显示器色域不同会导致色差&#xff0c;不同浏览器也有自己的调色板&#xff0c;后面总结出来过一套web安全色&am…

Registered Nurse in the US

注册护士移民美国的条件美国护士RN考试介绍美国注册护士考试复习美国各州注册护士考试要求CGFNSRegistered nurseTop Paid Registered Nurses 转载于:https://www.cnblogs.com/sbxlm/p/3655784.html

安卓突然自动关机 android正在启动,华为手机开机重启后老是显示安卓正在启动优化应用是为什么?...

建议进入Recovery模式执行双清wipe操作。Recovery模式指的是一种可以对安卓机内部的数据或系统进行修改的模式(类似于windowsPE或DOS)。在这个模式下可以刷入新的安卓系统&#xff0c;或者对已有的系统进行备份或升级&#xff0c;也可以在此恢复出厂设置。进入recovery的方法&a…

[html] 写一个密码默认星号,但可以查看密码的输入框

[html] 写一个密码默认星号&#xff0c;但可以查看密码的输入框 <i class"icon-password"></i> <input type"text" v-if"pwdType" v-model"eyeTxt" /> <input type"password" placeholder"输入新…

算法天书

在cstheory.stackexchange看到一个很有营养的帖子,发起人从《来自天书的证明》(Proofs from the Book)得到灵感&#xff0c;意思是&#xff0c;假如有上帝的话&#xff0c;上帝又有一本“算法天书”的话&#xff0c;那么这本算法书里面应该有哪些算法呢&#xff1f;NB而踊跃的跟…

linux+右键快捷,LINUX 添加右键打开终端快捷方式

第一种方法&#xff1a;安装一个包&#xff0c;即可在右键里面添加一个“打开终端”的菜单。sudoapt-getinstallnautilus-open-terminal&#xff0c;安装完成&#xff0c;注销以后再回来&#xff0c;就可以右键打开terminal了)第二种方法&#xff1a;进入主目录的.gnome2/nauti…

python中numpy矩阵运算操作大全(非常全)!

python中numpy矩阵运算操作大全&#xff08;非常全&#xff09; //2019.07.10晚python矩阵运算大全1、矩阵的输出形式&#xff1a;对于任何一个矩阵&#xff0c;python输出的模板是&#xff1a;import numpy as np #引入numpy模块np1np.array([[1,2,3],[1,3,4],[1,6,2]...]) #数…

[html] 制作一个不规则形状有哪些方法可以实现?

[html] 制作一个不规则形状有哪些方法可以实现&#xff1f; canvas个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

android dialog 点击确定不消失,AlertDialog点击按钮不消失的实现方法

我有一个文本输入对话框&#xff0c;当我点击对话框上的“是”按钮&#xff0c;它会验证输入&#xff0c;然后关闭对话框。但是&#xff0c;如果输入错误&#xff0c;我想停留在同一个对话框中.。每一次&#xff0c;无论输入是什么&#xff0c;对话框应该自动关闭&#xff0c;当…

计算平面坐标某点(x,y)与原点(0,0)的角度

以前某个项目有一个功能需要手指滑动一个饼图。当时搬高中数学公式&#xff0c;并大量查询网络&#xff0c;花了两个小时把那个功能的数学算法搞定。 今天在看android下一段源码时&#xff0c;突然发现一个数学函数&#xff1a;Math.atan2 &#xff0c;一下子羞愧难当&#xff…