之前遇到进制转换相关的问题时,都是自己用递归实现,百度搜了下原来有自带的函数可以用,那当然是直接就用上了~

C语言

  首先是C里面的,C里面直接用printf就可以实现,如下代码:

#include <bits/stdc++.h>

using namespace std;

int main()
{
    printf("10对应的十进制,八进制,十六进制:\n");
    printf("%d %o %X\n", 10, 10, 10);
    
    return 0;
}

  这个有个缺点,就是不能转换二进制,需要用atoi来转换 如下代码

#include <bits/stdc++.h>

using namespace std;

int main()
{
    printf("10对应的十进制,八进制,十六进制:\n");
    printf("%d %o %X\n", 10, 10, 10);
    
    char b[20];
    
    itoa(10, b, 2);  
        
    printf("10对应的二进制:\n");
    printf("%s\n", b);
    
    return 0;
}

atoi函数原型:

char *itoa (int value, char *str, int base);

  它可以进行任意进制转换,value为待转换的值,str为结果的缓存区,base为需要转换的进制

  但是这个函数有个缺点,就是负数的转换好像有点小问题.这时用C++的来实现就没问题

C++

  C++中也是直接cout就能输出,如下代码:

#include <bits/stdc++.h>

using namespace std;

int main()
{
    cout << "10对应的十进制,八进制,十六进制" << endl;
    
    cout << 10 << oct << " " << 10 << hex  << " "<< 10 << endl; 
    
    cout << "10对应的二进制" << endl << bitset<8>(10) << endl; 
    
    cout << "-10对应的二进制" << endl << bitset<8>(-10) << endl; 
    
    return 0;
}

  其中二进制的转换用了一个 bitset函数 这里我们可以直接把它当作进制转换使用.

`bitset<n>(value);`

  其中n为位数,value为值.

  用这些方法后解题会节省一些时间(甚至很多),看自己需求使用吧.

Last modification:October 16, 2020
If you think my article is useful to you, please feel free to appreciate