搜索
bottom↓
回复: 14

求ASCII转HEX和HEX转ASCII的算法

[复制链接]

出0入0汤圆

发表于 2008-3-31 14:06:29 | 显示全部楼层 |阅读模式
如题

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2008-3-31 19:20:37 | 显示全部楼层
求你给我点钱

出0入0汤圆

发表于 2008-3-31 19:30:50 | 显示全部楼层
好象超简单的。

出0入0汤圆

发表于 2008-3-31 20:50:58 | 显示全部楼层
取之于该网站,服务于该网站。下面是我在该网站上找的,希望对你有用。
void hex_to_ascii(unsigned char dat)
{
    unsigned char dat_buff;
  
    dat_buff = dat;
    dat = dat&0x0f;
    if((dat>=0)&&(dat<=9))
    {
       dat += 0x30;
    }
    else
       dat += 0x37;
        UART_TX_buff[7] = dat;
          
    dat = dat_buff;
        dat >>= 4;
        dat = dat&0x0f;
    if((dat>=0)&&(dat<=9))
    {
      dat += 0x30;
    }
    else
      dat += 0x37;
        UART_TX_buff[8] = dat;
}
void ascii_to_hex(void)
{
    unsigned char cnt,i;
   
        for(cnt=0,i=0;cnt<6;cnt++,cnt++,i++)
        {
          Twi_Hex_Data = Twi_ASCI_Data[cnt+1];//先放ASCII的高位(四位)
          Twi_Hex_Data <<= 4;
          Twi_Hex_Data += Twi_ASCI_Data[cnt];
        }
}

出0入0汤圆

发表于 2008-4-1 00:18:37 | 显示全部楼层
记号,谢谢

出0入0汤圆

 楼主| 发表于 2008-4-1 08:54:11 | 显示全部楼层
谢谢大家哈,

出0入0汤圆

发表于 2008-4-1 10:03:42 | 显示全部楼层
这种问题应该自己多考虑的!多查查资料,建议!

出0入0汤圆

发表于 2008-4-3 13:26:47 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-4-19 09:06:36 | 显示全部楼层
#define Hex2Ascii(data)  (data < 10)? ('0' + data) : ('A' + data - 10)

void Byte2ASCII(unsigned char data, unsigned char *pBuf)
{
    unsigned char temp;

    temp = data & 0x0F;
    pBuf[1] = Hex2Ascii(temp);

    temp = data >> 4;
    pBuf[0] = Hex2Ascii(temp);
}

这个短点

出0入0汤圆

发表于 2008-4-19 09:49:21 | 显示全部楼层
再加上两字节的:
#define Hex2Ascii(data)  (data < 10)? ('0' + data) : ('A' + data - 10)
void Byte2ASCII(unsigned char data, unsigned char *pBuf)
{
    unsigned char temp;
   
    temp = data & 0x0F;
    pBuf[1] = Hex2Ascii(temp);
   
    temp = data >> 4;
    pBuf[0] = Hex2Ascii(temp);
}


void Uint2ASCII(unsigned short data, unsigned char *pBuf)
{
    unsigned char temp;
   
    temp = (unsigned char)(data & 0x000F);
    pBuf[3] = Hex2Ascii(temp);
   
    data >>= 4;
    temp = (unsigned char)(data & 0x000F);
    pBuf[2] = Hex2Ascii(temp);
   
    data >>= 4;
    temp = (unsigned char)(data & 0x000F);
    pBuf[1] = Hex2Ascii(temp);
   
    data >>= 4;
    temp = (unsigned char)(data);
    pBuf[0] = Hex2Ascii(temp);
}

#define Ascii2Hex(data)  (data >= '0' && data <= '9')? (data - '0') : ((data >= 'A' && data <= 'F')? (data - 'A' + 10) : ((data >= 'a' && data <= 'f')? (data - 'a' + 10) : 0))
unsigned char ASCII2Byte(unsigned char *pBuf)
{
    unsigned char temp;
    unsigned char c;
   
    c = *pBuf++;
    temp = ((unsigned char)Ascii2Hex(c)) << 4;
    c = *pBuf;
    temp += Ascii2Hex(c);
   
    return temp;
}

unsigned short ASCII2Uint(unsigned char *pBuf)
{
    unsigned short temp;
    unsigned char c;
   
    c = *pBuf++;
    temp = ((unsigned short)Ascii2Hex(c)) << 12;
    c = *pBuf++;
    temp += ((unsigned short)Ascii2Hex(c)) << 8;
    c = *pBuf++;
    temp += ((unsigned short)Ascii2Hex(c)) << 4;
    c = *pBuf;
    temp += Ascii2Hex(c);
   
    return temp;
}

出0入0汤圆

发表于 2008-4-19 09:52:48 | 显示全部楼层
mark!要用到时再看

出0入0汤圆

发表于 2009-2-23 15:27:28 | 显示全部楼层
好东西,谢谢分享了,TO nicksean 不务正业,向你学习

出0入0汤圆

发表于 2015-10-29 22:38:38 | 显示全部楼层
nicksean 发表于 2008-4-19 09:49
再加上两字节的:
#define Hex2Ascii(data)  (data < 10)? ('0' + data) : ('A' + data - 10)
void Byte2ASC ...

好算法,谢谢分享!

出0入0汤圆

发表于 2015-10-29 22:51:10 | 显示全部楼层
不客气,希望对你有用

出0入0汤圆

发表于 2015-10-29 23:36:26 来自手机 | 显示全部楼层
这个算法很简单啊!自己写就好了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 08:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表