当前位置: 代码迷 >> C# >> ,哪位大神帮忙把c++翻译为c
  详细解决方案

,哪位大神帮忙把c++翻译为c

热度:255   发布时间:2016-05-05 05:30:16.0
求助,哪位大神帮忙把c++翻译为c#
/**************************************************************

*   说明:该函数是把没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;
}
  相关解决方案