两个asc码转化成一个hex代码,返回为何总是0x00

[复制链接]
3288|4
 楼主| chuandaoxy 发表于 2007-8-13 11:06 | 显示全部楼层 |阅读模式
代码目的是为了将传输数据过程中重新组合数据

过程是这样的发送时先将一个hex转成两个asc在线路上传输,

接收时将线路上传输的两个asc转成一个hex,将数据恢复,进行分析


#include<reg52.h>

#define  uchar unsigned char    

uchar  char_tab[2]={'1','2'};

unsigned char a2toh(unsigned char *str)
{
    unsigned char tmp;

    tmp = 0;
    
    tmp = char_tab[*str];

    str++;

    tmp = tmp*16 + char_tab[* str];

    return tmp;
}

       main()

{     uchar temp[1];

         temp[1] = a2toh(char_tab); 

          while(1)

          {}

          }

    
gjg191 发表于 2007-8-13 11:29 | 显示全部楼层

dd

指针用的有问题.定义了全局变量干什么还用入口参数.
#define  uchar unsigned char    

uchar  char_tab[2]={'1','2'};

unsigned int a2toh()
{
    unsigned int tmp;
    uchar    i;

    tmp = 0;
    i=0;
    tmp = char_tab;
    i++;


    tmp = tmp*16 + char_tab;

    return tmp;
}

main()

{     
unsigned    int temp;

         temp= a2toh(); 
         while(1)
         {
         }
}这样就ok拉
xwj 发表于 2007-8-13 13:34 | 显示全部楼层

char_tab[]内容不对,2楼一改就更不对了

gjg191 发表于 2007-8-13 13:42 | 显示全部楼层

dd

哦!我改的不符合1楼的意思!
gjg191 发表于 2007-8-13 13:58 | 显示全部楼层

dd

#include<reg51.h>

#define  uchar unsigned char    

uchar  char_tab[2]={'1','2'};

unsigned int a2toh(uchar *str)
{
    unsigned int tmp;
    //uchar    i;
    
    tmp = 0;
    tmp    =*str;
    str++;
    tmp = (tmp*16) + *str;

    return tmp;
}

main()

{     
unsigned    int temp;

         temp= a2toh(char_tab); 
         while(1)
         {
         }
}再来个!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

856

主题

1046

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部