如何将字符串转换为16进制数值

有1个数组chara[2]a[0]='e',a[1]='9',,假记为a[2]="e9"十六进制数e9等于十进制数233如何将这个数组转换为十六进制e9或者十进制数233... 有1个数组 char a[2]
a[0]='e',a[1]='9', ,假记为a[2] = "e9"
十六进制数 e9 等于十进制数 233
如何将这个数组转换为十六进制 e9 或者十进制数 233
我自己后来想出来了:
if(z[0]>='0' && z[0] <='9')
x = (int)z[0] - 48;
else
if(z[0] >='A' && z[0] <= 'Z')
x=(int)z[0] - 55;
else
{
perror("http address string wrong");
exit(0);
}
printf("x====>%d ",x);

if(z[1]>='0' && z[1] <='9')
y = (int)z[1] - 48;
else
if(z[1] >='A' && z[1] <= 'Z')
y=(int)z[1] - 55;
else
{
perror("http address string wrong");
exit(0);
}
大概就只这样
展开
 我来答
柔和又妥当的布丁c
2008-09-17 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:0
展开全部
举个例子:233转变成e9
233/16 = 14 余数为9
14的十六进制为e,9的十六进制还是9,所以转换结果为e9.
也就是说:如果相除的结果小于1,则结果是多少就直接转换
如果结果在1和15之间,则转换后的结果如本例所示.
依此类推.

再举个例子:143转变成e9
143/16 = 8 余数为15
8的十六进制还是8,15的十六进制是f,所以转换结果为8f.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
beddy1
2008-09-17 · TA获得超过1989个赞
知道大有可为答主
回答量:2271
采纳率:0%
帮助的人:2206万
展开全部
看你想翻译多长的十六进制,太长的方法是比较复杂的。短的(8位及以下),我可以给你一点建议,每个十六进制位控制4个bit,你可以从低到高,赋值给一个int型的数,结果就出来了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伊·梵beec
2008-09-17 · TA获得超过2160个赞
知道大有可为答主
回答量:1897
采纳率:0%
帮助的人:1380万
展开全部
int char2int(char a[2])
{
int a,b;
if (a[0]>='0' && a[0]<='9') a=a[0]-'0';
else if(a[0]>='a' && a[0]<='f')) a=a[0]-'a'+10;
else if(a[0]>='A' && a[0]<='F')) a=a[0]-'A'+10;
else return -1;
if (a[1]>='0' && a[1]<='9') b=a[1]-'0';
else if(a[1]>='a' && a[1]<='f')) b=a[1]-'a'+10;
else if(a[1]>='A' && a[1]<='F')) b=a[1]-'A'+10;
else return -1;

return a*16+b;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式