| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1309 人关注过本帖
标题:[求助]用C将十六进数解译成十进制数时,遇到“0d”就出错 谁能给点提示?
只看楼主 加入收藏
落落12
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-8-8
收藏
 问题点数:0 回复次数:3 
[求助]用C将十六进数解译成十进制数时,遇到“0d”就出错 谁能给点提示?
用C将十六进数解译成十进制数时,遇“0d”就出错  谁能给点提示?
  用C编写一个将十六进数解译成十进制数的小程序时,遇“0d”  
  求教:我用c编写一个将十六进数解译成十进制数的小程序,发现只要读到有“0d”的地方就出错。
比如“52 0d 00 00  df 0c 00 00”,
正确的读法应该是:
52 0d 00 00对应十进制数是3410,     df 0c 00 00对应十进制数是3295
但在程序中从52开始的话,会读成df000052,
         从od开始的话,也读成df000052
         从第一个00开始会读成0cdf0000
我查了一下"0d"对应十进制数13,对应ASCII码是回车符,是不是和这个有关系啊?
怎么才能让它正确读数呢?
哪位朋友知道的话请给点提示!先谢过!
  
 
搜索更多相关主题的帖子: 点提示 十进制 译成 
2005-08-08 15:18
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
你好

1。你的“52 0d 00 00”等等是二进制还是字符串?你是怎么读的?

2。贴上你的代码,以及少量的测试文件。

不然,这里岂不成了猜迷大会?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-08-08 17:06
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
得分:0 

#include "stdio.h" main() { int i; long dec,htod(char d[]); char d[10],loop='y',c; for(;loop=='y'||loop=='Y';) { i=0; while((c=getchar())!='\n') { if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f') { d[i]=c; i++; /*若输入的字符是十六进制允许的字符,存入d数组*/ if(i>=8)break; /*最多八位*/ } d[i]='\0'; /*数组最后一个元素赋'\0'*/ dec=htod(d); /*调用转换函数*/ } printf("The decimal number is %ld\n",dec); printf("continue? Y/N"); scanf("%2c",&loop); } }

long htod(char de[]) { char c; int i; long dec=0; for(i=0;(c=de[i])!='\0';i++) /* 循环将de数组的各元素拼成十进制数 */ if(c>='0'&&c<='9')dec=dec*16+c-'0'; else if(c>='a'&&c<='f')dec=dec*16+c-'a'+10; else if(c>='A'&&c<='F')dec=dec*16+c-'A'+10; return dec; }


/* HELLO.C -- Hello, jat chan */ #include \"stdio.h\" #include \"conio.h\" main() { printf(\"Hello, jat chan\\n\"); getch(); }
2005-08-09 00:57
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
得分:0 

htod函数的工作是将de数组中的元素拼成十进制数,存放在变量dec中,最后将dec返回主函数。拼十进制数是这样完成的:dec初值为0,构造循环(循环变量i),每次dec*16+c(c中存放de[i]的值,注意de是字符型数组,存放的是字符的ascII码),然后再根据c是数字字符还是字母a到f或A到F,减去'0'或'a'或'A'的ascII码,再直到遇见\0为止。循环结束,dec中就是拼好的十进制数。


/* HELLO.C -- Hello, jat chan */ #include \"stdio.h\" #include \"conio.h\" main() { printf(\"Hello, jat chan\\n\"); getch(); }
2005-08-09 00:58
快速回复:[求助]用C将十六进数解译成十进制数时,遇到“0d”就出错 谁能给点提 ...
数据加载中...
 
   



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

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