//编译器用G++不然c++函数会CE,因为C++不支持itoa函数
/*
[itoa](https://baike.baidu.com/item/itoa)() 函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数(进制)。在上例中,转换基数为10,就意味着以10为转换进制。10:十进制;2:二进制...
itoa 并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
标准库中有sprintf,功能比这个更强,用法跟printf类似:
char str[255];
sprintf(str, "%x", 100); //将100转为16进制表示的字符串
*/
#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
long toTen(char a[], int bit) //任意进制转换为10进制
{
int length = strlen(a);
int i, b = 1, sum = 0; //i要做数组a的下标,注意其起止范围
for (i = length - 1; i >= 0; i--)
{
if (a[i] >= 'A')
{
sum += (a[i] - 'A' + 10) *b;
b *= bit;
}
else
{
sum += (a[i] - '0') *b;
b *= bit;
}
}
return sum;
}
int main() //~itoa函数为10进制转换为任意进制
{
int a,n;
char temp[200];
while(cin >> a >> n != NULL)
{
int flag = 0;
if(a < 0)
{
flag = 1;
a = -a;
}
if(flag) cout << '-';
_itoa(a, temp, n);
for(int i = 0;temp[i];i++) //判断16进制中的字母是否需要大小写
{
if(temp[i] >= 'a'&&temp[i] <= 'z')
temp[i] = temp[i] - 32;
}
cout << temp << endl;
}
return 0;
}
进制转换
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。