新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
任意进制之间的进制转换。需要考虑高精度整形的设计,用数组模拟一个整形变量。一位一位的进行进制转换,算法思想和十进制转换到二进制相同,除以目标进制,余数为低位。这种进制转换实用性不强,一般出现在计算机程序竞赛当中。
成都创新互联服务项目包括绥江网站建设、绥江网站制作、绥江网页制作以及绥江网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,绥江网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到绥江省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
8,10,16进制的转换。在C语言中有不少函数都能实现上面几种进制之间的进制转换。
推荐其中的sprintf/sscanf函数。
sprintf格式的规格如下所示。[]中的部分是可选的。
%[指定参数][标识符][宽度][.精度]指示符
若想输出'%'本身时, 请使用'%%'处理。
1. 处理字符方向。负号时表示从后向前处理。
2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。
3. 字符总宽度。为最小宽度。
4. 精确度。指在小数点后的浮点数位数。
转换字符
%% 印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位。
例程(16进制和10进制之间的转换):
#include stdio.h
#include limits.h
int main()
{
char s[100] = {0};
sprintf(s, "%x", INT_MAX);
printf("%s\n", s); // 7fffffff
char str[100] = "7fffffff";
int i = 0;
sscanf(str, "%x", i);
printf("%d\n", i); // 2147483647
return 0;
}
#includestdio.h
int main()
{
int i,j,x,a[1000];
scanf("%d",x);
for(i=0;;i++)
{
a[i]=x%2;
x=x/2;
if(x==0)
break;
}
for(j=i;j=0;j--)
printf("%d",a[j]);
return 0;
}
代码没有调试,可以参考参考
刚帮你从网上找了个例子,主要思想就是用X,d,O等打印出来
void two_ten()
{
long num;
int b,TheTen=0,Total=0;
printf("\n请输入一个二进制数(只包含0或1):");
scanf("%ld",num);
while(num)
{
b=num-(int)(num/10)*10;
TheTen+=b*pow(2,Total);;
Total++;
num=(int)(num/10);
}
printf("转换为十进制:"); //打印
printf("%d",TheTen);
printf("\n");
}
void eight_ten()
{
int num, i;
int arr[20];
printf("\n请输入一个八进制数(只由0~7之前的数组成):");
scanf("%o",num);
printf("转换为十进制:"); //打印
printf("%d",num);
printf("\n");
}
void sixteen_ten()
{
int num, i;
int arr[20];
printf("\n请输入一个十六进制数(只由0~9和A~F之前的数组成):");
scanf("%X",num);
printf("转换为十进制:"); //打印
printf("%d",num);
printf("\n");
}
随便写了个
#includestdio.h
int atod(char a, char b, char c, char d){
return (a % 0x30) * 1000 + (b % 0x30) * 100 + (c % 0x30) * 10 + (d % 0x30);
}
int atox(char a, char b, char c){
unsigned int n;
a = a | 0x20;
b = b | 0x20;
c = c | 0x20;
n = (a 0x3a ? a % 0x57 : a % 0x30) * 0x100;
n = n + (b 0x3a ? b % 0x57 : b % 0x30) * 0x10;
n = n + (c 0x3a ? c % 0x57 : c % 0x30);
return n;
}
int main(){
int n;
char a, b, c, d, t;
for(n = 0; n 10; n++){
printf(" 1 - for conversion from 4-Decimal-Characters to a decimal integer\n\
2 - for conversion from 3-Hexadecimal-Characters to a decimal integer\n\
0 - Exit\n");
t = getch();
if(t == '1'){
printf("conversion from 4-Decimal-Characters\n");
scanf("%c %c %c %c", a, b, c, d);
printf("%d\n", atod(a, b, c, d));
} else if(t == '2') {
printf("conversion from 3-Hexadecimal-Characters\n");
scanf("%c %c %c", a, b, c);
printf("%d\n", atox(a, b, c));
} else {
break;
}
}
return 0;
}