十六进制转十进制,怎样计算十六进制数。

 我来答
weng_weijie
2022-12-16 · TA获得超过209个赞
知道答主
回答量:29
采纳率:66%
帮助的人:8万
展开全部

十六进制转十进制:

从个位起第i位乘以16的i-1次方

比如

0x233 = 2*16^2 + 3*16^1 + 3*16^0 = 512 + 48 + 3 = 563

0x666 = 6*16^2 + 6*16^1 + 6*16^0 = 1536 + 96 + 6 = 1638

0x7FFF = 7*16^3+15*16^2+15*16^1+15*16^0=28672+3840+240+15=32767

十进制转十六进制:

除十六取余数

比如

233 ÷ 16 = 14 ......9

14 ÷ 16 = 0 ......14

倒着写就是0xE9

32768 ÷ 16 = 2048 ......0

2048 ÷ 16 = 128......0

128 ÷ 16 = 8......0

8 ÷ 16 = 0......8

倒着写就是0x8000

算法实现:

十六进制转十进制:


#include<stdio.h>
#include<string.h>
char buf[20];
int len,_pow,ans=0;
int trans(char hex)
{
if (hex>='0'&&hex<='9') return hex-48;
if (hex>='a'&&hex<='f') return hex-87;
if (hex>='A'&&hex<='F') return hex-55;
return 0;
}
int main(){
scanf("%s",buf);
len = strlen(buf);
_pow = 1;
for (int i=len-1;i>=0;i--)
{
ans = ans + trans(buf[i]) * _pow;
_pow = _pow << 4;
}
printf("%d\n",ans);
return 0;
}

十进制转十六进制:

#include<stdio.h>
char trans(int deci)
{
if (deci<10) return deci+48;
return deci+55;
}
int n,len=0;
char hex[20];
int main(){
scanf("%d",&n);
while(n)
{
hex[len++] = trans(n&15);
n=n>>4; 
}
for (int i=len-1;i>=0;i--)
putchar(hex[i]);//跟手算一样,要倒着输出
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式