/**************************************************************
*
* 说明:该函数是把没2个字节的ASC转换成HEX,如"12df43",
* 那么retbuf={0x12,0xdf,0x43}
***************************************************************/
void ASCTOHEX(unsigned char *pStr,unsigned int len,unsigned char *retbuf)
{
unsigned int i;
unsigned char h,l;
unsigned char pbuf[4096];
unsigned int len1;
if (len>4094)
return ;
memcpy(pbuf,pStr,len);
len1=len;
//如果不能被二整除,就添加0
if (len1%2) {
len1+=1;
pbuf[len1] = '0';
}
for (i=0; i<len1; i = i+2) {
if ((pbuf[i]>='A')&&(pbuf[i]<='F'))
h = pbuf[i]-'A'+10;
else if ((pbuf[i]>='a')&&(pbuf[i]<='f'))
h = pbuf[i]-'a'+10;
else if ((pbuf[i]>='0')&&(pbuf[i]<='9'))
h = pbuf[i]-'0';
if ((pbuf[i+1]>='A')&&(pbuf[i+1]<='F'))
l = pbuf[i+1]-'A'+10;
else if ((pbuf[i+1]>='a')&&(pbuf[i+1]<='f'))
l = pbuf[i+1]-'a'+10;
else if ((pbuf[i+1]>='0')&&(pbuf[i+1]<='9'))
l = pbuf[i+1]-'0';
retbuf[i/2] = h*16 + l;
}
return;
}
------解决思路----------------------
送分吧~~~
static byte[] Result(string d)
{
if(string.IsNullOrEmpty(d))return null;
if(d.Length%2!=0)d="0"+d;
byte[] r = new byte[d.Length / 2];
for (int i = 0; i < d.Length; i += 2)
{
r[i / 2] = Convert.ToByte(d.Substring(i, 2), 16);
}
return r;
}