ascii互换hex

int CSerialPort::str2Hex(CString str, CString &data)
{
int t,t1;
int rlen=0,len=str.GetLength();
if(!((len-1)%2))
{
rlen=0;
return rlen;
}

LPTSTR pBuffer = data.GetBuffer((len+1)/2); 
for (int i=0;i<len;)
{
char l,h=str[i];
if (h==' ')
{
i++;
continue;
}
i++;
if (i>=len)
break;
l=str[i];

t=HexChar(h);
t1=HexChar(l);
if (t==-1||t1==-1)
{
rlen = -1;
break;
}
if ((t==16)||(t1==16))
break;
else
t=t*16+t1;    
i++;
pBuffer[rlen]=(char)t;
rlen++;
}
data.ReleaseBuffer();


return rlen;
}


char CSerialPort::HexChar(char c)
{
if ((c>='0')&&(c<='9'))
return c-0x30;
else if ((c>='A')&&(c<='F'))
return c-'A'+10;
else if((c>='a')&&(c<='f'))
return c-'a'+10;
else 
    return -1;
}


void  CSerialPort::HexToAscii(BYTE *Temp,CString &data,int Len)
{
LPTSTR pBuff=data.GetBuffer(Len*2);
char sztemp[2];
for (int i=0;i<Len;i++)
{


sztemp[0]=Temp[i]/16;
if (sztemp[0]>0x09)
sztemp[0]=sztemp[0]-0x0a+'A';
else
sztemp[0]+=0x30;


sztemp[1]=Temp[i]%16;
if (sztemp[1]>0x09)
sztemp[1]=sztemp[1]-0x0a+'A';
else
sztemp[1]+=0x30;


pBuff[i*2]=sztemp[0];
pBuff[i*2+1]=sztemp[1];
}
data.ReleaseBuffer();
}



int ascii_to_hex(char* str, unsigned char* buf, int* size)
{
        int i;
        int len=strlen(str);
        if(len%2){
                fprintf(stderr, "ascii can't conver to hex,no't even number\n");
                return -1;
        }
        for(i = 0; i < len;i += 2)
        {
                int val = 0;
                char tmp_buf[3];
                 memset(tmp_buf, 0, sizeof(tmp_buf));
                memcpy(tmp_buf, &str[i], 2);
                sscanf(tmp_buf, "%x", &val);
                buf[i / 2] = (unsigned char)val;
        }
                *size=i/2;
        return 0;
}




<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(2) | 评论(0) | 转发(0) |
0

上一篇:android apk 压力测试

下一篇:kernel 编译失败

给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值