将int型数据转换成任意进制字符串的算法
// 我不知道网络上有没有类似的算法,这个算法是我昨天睡觉时想出来的。因为以前看到有些// 算法只能转16进制,我就想,转换的进制能不能由用户自己输入呢?我就想出来了这个
#include <stdio.h>
//////////////////////////////////////////////////////////////////////////
// 把int型数据转换成system进制的字符串,返回转换出的串长
int Conversion(int number, /*in 要转换的数据*/
int system, /*in 进制*/
char output[]) /*out 输出数据*/
{
// 商,余数和标记
int Quotient, Balance, i = 0;
Quotient = number;
do
{
Balance = Quotient % system;
output[i++] = Balance;
} while (Quotient /= system);
// 转换为char型
for(int j = 0; j < i; j++)
if(output[j] > 9)
output[j] = output[j] + 55;
else output[j] += 48;
// 字符串取反
for(int k = 0; k < i / 2; k++)
{
char tmp;
tmp = output[k];
output[k] = output[i - k - 1];
output[i - k - 1] = tmp;
}
return i;
}
int main(void)
{
char rec[1024] = {0};
int num, sys;
printf("任意转换位数测试程序\t\tby Flyue 080607\n");
printf("请输入一个数和要转换的位数:\t(如 12345 16)\n");
scanf("%d%d", &num, &sys);
int res = Conversion(num, sys, rec);
printf("结果为:\t%s\n", rec);
return 0;
}