全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

2~62位任意进制转换方法(c++)

进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制。

思路是原进制先转换为10进制,再转换到目标进制。

疑问:

对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最后再将负号补回来,我认为这种做法是不对的。

正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制补码(这时候就正负数就统一了),将二进制数转换为十进制后在转换为其他进制(如果有小伙伴知道如何直接将二进制转换为任意进制的方法可以留言告诉我,不胜感激。注意这里的任意进制不是单纯的8 16等2的幂次进制,还有其他的比如7、9等)。

下面贴上这种我认为针对负数的处理方法不太合适的代码:

输入格式:原进制,目标进制,原进制下的数字(用字符串表示)

输出格式:目标进制下的数字

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

//将任意字符转换为十进制,其中a-z代表10-35,A-Z代表36-61,用对应的ASCII码调整就好
long long convertToDec(char c)
{
 long long decNum;
 if(c>='a' && c<='z')
  decNum=c-87;
 else if(c>='A' && c<='Z')
  decNum=c-29;
 else if(c>='0' && c<='9')
  decNum=c-48;

 return decNum;
}

//将十进制转换为这些字符
char convertToDec(long long c)
{
 long long objchar;
 if(c>=10 && c<=35)
  objchar=c+87;
 else if(c>=36 && c<=61)
  objchar=c+29;
 else if(c>=0 && c<=9)
  objchar=c+48;

 return objchar;
}

int main()
{
 int src;
 int obj;
 string num;

 while(cin>>src>>obj>>num)
  {

   bool IsNegative=false;
   if(num[0]=='-')
    {
     num.erase(0);
     IsNegative=true;
    }

   long long decNum=0;//十进制数(中间数)
   for(long long i=0;i<num.size();++i)
    decNum+=convertToDec(num[i])*pow(src,num.size()-1-i);

   string strTmp;
   long long tmp;
   while(decNum>0)
    {
     tmp=decNum % obj;
     strTmp=convertToDec(tmp)+strTmp;
     decNum/=obj;
    }

   if(IsNegative)
    strTmp='-'+strTmp;
   cout<<strTmp<<endl;
  }

 return 0;
}

以上这篇2~62位任意进制转换方法(c++)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# c  # 任意进制转换  # C++实现十六进制字符串转换成int整形值的示例  # C++中几种将整数转换成二进制输出的方法总结  # C++实现十六进制字符串转换为十进制整数的方法  # C++实现数字转换为十六进制字符串的方法  # C++ 十进制转换为二进制的实例代码  # 关于C++读入数字按位取出与进制转换问题(典型问题)  # 转换为  # 我认为  # 给大家  # 求出  # 小伙伴  # 告诉我  # 不太  # 就好  # 其他的  # 希望能  # 可以直接  # 这篇  # 贴上  # 大可  # 再将  # 小编  # 大家多多  # 一了  # 这时候  # 二进制数 


相关文章: 实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何在宝塔面板中修改默认建站目录?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  北京企业网站设计制作公司,北京铁路集团官方网站?  如何实现建站之星域名转发设置?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何在万网主机上快速搭建网站?  如何在香港服务器上快速搭建免备案网站?  三星网站视频制作教程下载,三星w23网页如何全屏?  c# 服务器GC和工作站GC的区别和设置  h5网站制作工具有哪些,h5页面制作工具有哪些?  小型网站制作HTML,*游戏网站怎么搭建?  Java解压缩zip - 解压缩多个文件或文件夹实例  如何通过万网虚拟主机快速搭建网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何快速辨别茅台真假?关键步骤解析  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  建站之星安装步骤有哪些常见问题?  代刷网站制作软件,别人代刷火车票靠谱吗?  Swift中循环语句中的转移语句 break 和 continue  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  如何快速搭建个人网站并优化SEO?  建站之星安装需要哪些步骤及注意事项?  如何在橙子建站上传落地页?操作指南详解  建站之星免费版是否永久可用?  如何在香港免费服务器上快速搭建网站?  如何通过NAT技术实现内网高效建站?  电商网站制作价格怎么算,网上拍卖流程以及规则?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何在Windows虚拟主机上快速搭建网站?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  如何在腾讯云服务器快速搭建个人网站?  如何获取PHP WAP自助建站系统源码?  c# await 一个已经完成的Task会发生什么  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何自定义建站之星模板颜色并下载新样式?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  内部网站制作流程,如何建立公司内部网站?  Bpmn 2.0的XML文件怎么画流程图  Python文件管理规范_工程实践说明【指导】  ,柠檬视频怎样兑换vip?  ,制作一个手机app网站要多少钱?  如何通过.red域名打造高辨识度品牌网站?  大连网站设计制作招聘信息,大连投诉网站有哪些?  如何基于云服务器快速搭建网站及云盘系统?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。