2019C++期末复习③——进制转换

其它进制转10进制

10进制转其它进制


base进制的字符串 转成 10进制整型

#include<iostream>
using namespace std;//使用命令空间std
//base进制的字符串 转成 10进制整型
int stringtoint(char s[], int base)
{
  int ans = 0;
  for (int i = 0; s[i]; i++)
  {
   if (s[i] < '9')
    ans = ans * base + s[i] - '0';
   else
    ans = ans * base + s[i] - 'A' +10;//A的十六进制是10 
  }
  return ans;
}

10进制的整型 转成 base进制的字符串

//10进制的整型 转成 base进制的字符串
void intostring(int a, char s[], int base)
{
 int g;
 int i = 0;
 while (a>0)
 {
  g = a%base;//取个位
  if (g < 10)
    s[i] = g + '0';
  else
    s[i] = g + 'A' - 10;
  i++;
  a = a /base;//扔个位
 }
 s[i] = 0;//让是s[i]结束
 char* l; char* r;
 l = s; r = s;
 while (*++r);
 r--;
 while (l < r)
 {
  swap(*l, *r);//交换
  l++;
  r--;
 }
}

测试函数

void textstringtoint()
{
 char s[100] = "ABC";//10*16*16+11*16+12= 2748
 int a = stringtoint(s, 16);
 
 char d[100] = "123";//1*16*16+2*16+3=291
 int b = stringtoint(d, 16);
 
 char e[100] = "123";//1*10*10+2*10+3=123
 int c = stringtoint(e, 10);
 
 char f[100] = "1111011";//123
 int g = stringtoint(f, 2);
 
 cout << a << endl << b << endl << c << endl << g << endl << endl;
 }
 
void textintostring()
{
 int a =123;//1111011
 char s[100];
 intostring(a,s,2);
 for (int i = 0; s[i]; i++)
   cout << s[i];
 cout << endl;
 
 int b = 2748;//ABC
 char k[100];
 intostring(b, k, 16);
 for (int i = 0; k[i]; i++)
   cout << k[i];
}

主函数

int main()
{
 textstringtoint();
 textintostring();
}

显示结果
2748
291
123
123

1111011
ABC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值