首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

十六进制怎么转十进制啊?

发布网友 发布时间:2022-04-22 00:34

我来回答

1个回答

热心网友 时间:2023-06-21 21:27

十六进制转十进制:

从个位起第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;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com