| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 14959 人关注过本帖, 2 人收藏
标题:请教:如何请一个四字节的16进制数转换为十位十进制数?
只看楼主 加入收藏
rwvip
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-7-31
结帖率:0
收藏(2)
已结贴  问题点数:20 回复次数:9 
请教:如何请一个四字节的16进制数转换为十位十进制数?
得到四个十六进制的数,比如a[1],a[2],a[3],a[4]分别代表四个字节;那现在要如何把这四个字节组合在一起转换为十位十进制输出呢?比如4A2B3C4D这四个字节组合在一起,要输出:1512782925。应该如何写代码,请赐教,不胜感激!我的QQ:1906671131,请联系我,交个朋友。
搜索更多相关主题的帖子: 不胜感激 十六进制 十进制 
2012-07-31 11:35
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:3 
看不出来你哪儿不懂?想给你建议也无从下手啊
2012-07-31 12:43
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:3 
用一个char数组来存储,但用整数来赋值
char a[4]={90,43,60,77};
首先分别将a[i](0<=i<4)转化为十六进制
int high,low;
high=(int)a[i]/16;
low=(int)a[i]%high;
如90,high=5,low=10;43,high=2,low=11;60,high=3,low=12;77,high=4,low=13;
然后给每个不同的i分配权值
int power=2*(MAX-1-i)+1;
对MAX=4的数组,i=0,1,2,3其权值分别为7,5,3,1,
代表第一个high,low对的权值为7,6;第二对为5,4;3,2;1,0;
那么结果为
int res=0;
res+=(high*16^power+low*16^(power-1));
这样对所有i循环完成后,上例为:
res=0+(5*16^7+10*16^6)+(2*16^5+11*16^4)+(3*16^3+12*16^2)+(4*16^1+13*16^0)
=1512782925

2012-07-31 17:00
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
收藏
得分:3 
#include<stdio.h>
void main()
{
char a[4];
int o=0; //存放最终结果
for(int i=0;i<4;i++)
    scanf(" %x",&a[i]);//输入数据
for(int j=0;j<4;j++)
{
    o*=16;o+=a[j];合成数据
}
printf("%d",o);输出数据
}
2012-08-04 14:35
shijiahong52
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2012-8-3
收藏
得分:3 
以下公式就能实现
a[1] * 16^3 + a[2] * 16^2+ a[3] * 16^1 + a[4] * 16^0
2012-08-04 15:09
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:3 
用位运算啊

总有那身价贱的人给作业贴回复完整的代码
2012-08-04 17:04
LShang
Rank: 4
来 自:China
等 级:业余侠客
威 望:3
帖 子:183
专家分:258
注 册:2010-12-24
收藏
得分:3 
那么着急求代码干啥?
Google一下进制转换,看一下16进制如何转换成10进制不就OK了

学如逆水行舟,不进则退
士不可以不弘毅,任重而道远
2012-08-04 19:01
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:0 
回4、5楼:
你们没理解楼主的意思,楼主说的是一个[4]数组(类型暂定),但表示的是5A2B3C4D共8位的16进制数,也就是说5A(十进制的90)存数组[0],2B存数组[1]以此类推。由于最大的是FF,也就是十进制的256,因此可以用一个char类型来存储,但少一个256,也可以用int型来存储,但不管怎么存储,结果都是5*16^7+10*16^6+......,而不是90*16^3......,其中5就是数组[0]存储的数字90,除以16的商,而10是90除以16的余数。
2012-08-06 09:28
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
收藏
得分:0 
回复 8楼 stophin
谢谢提醒,原来却是我错了。
2012-08-06 09:43
我乃新手
Rank: 2
等 级:论坛游民
帖 子:52
专家分:73
注 册:2012-7-23
收藏
得分:3 
8楼正解
2012-08-06 10:27
快速回复:请教:如何请一个四字节的16进制数转换为十位十进制数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015210 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved