1个回答
2012-11-12 · 知道合伙人软件行家
关注
展开全部
1. 不管是16进制,还是10进制说,在内存中都是2进制,所以我们可以直接将之以不同方式显示, 比如%d %x
2. 如果是想将字符格式的十六进制串,手动编写转换过程,以下是示例代码:
#include<stdio.h>
#define N 100
int fun(char *s)
{
int i=0, p=0;
for(i=0;s[i]!='\0'; i++)
{
if (s[i] >='0'&& s[i] <='9')
p = p*16+s[i]-'0';
if (s[i] >='a' && s[i] <='f')
p = p*16+s[i]-'a'+10;
if (s[i] >='A' && s[i] <='F')
p = p*16+s[i]-'A'+10;
}
return p;
}
void main()
{
char s[N];
gets(s);
printf("%d",fun(s));
}
===============================
数学中的转换十六转换十进制过程:
1. 16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
2.十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
3. 所以,在第N(N从0开始)位上,如果是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
0xa38f 也就是十六进制 A38F,转换成10进制的过程:
= F * 16^0 + 8 * 16^1 + 3 * 16^2 + A * 16^3
= 15*1 + 8*16 + 3*256 + 10*4096
= 15 + 128 + 768 + 40960
= 41871
2. 如果是想将字符格式的十六进制串,手动编写转换过程,以下是示例代码:
#include<stdio.h>
#define N 100
int fun(char *s)
{
int i=0, p=0;
for(i=0;s[i]!='\0'; i++)
{
if (s[i] >='0'&& s[i] <='9')
p = p*16+s[i]-'0';
if (s[i] >='a' && s[i] <='f')
p = p*16+s[i]-'a'+10;
if (s[i] >='A' && s[i] <='F')
p = p*16+s[i]-'A'+10;
}
return p;
}
void main()
{
char s[N];
gets(s);
printf("%d",fun(s));
}
===============================
数学中的转换十六转换十进制过程:
1. 16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
2.十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
3. 所以,在第N(N从0开始)位上,如果是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
0xa38f 也就是十六进制 A38F,转换成10进制的过程:
= F * 16^0 + 8 * 16^1 + 3 * 16^2 + A * 16^3
= 15*1 + 8*16 + 3*256 + 10*4096
= 15 + 128 + 768 + 40960
= 41871
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询