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

ican 2014-12-17 07:05:05
/**************************************************************
*
* 说明:该函数是把没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;
}
...全文
125 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxldfang 2014-12-17
  • 打赏
  • 举报
回复
送分吧~~~
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;
}
MaxZhang666666 2014-12-17
  • 打赏
  • 举报
回复
如果你不理解这段代码的意思给你转换了也没有意义 授人以鱼不如授人以渔
ican 2014-12-17
  • 打赏
  • 举报
回复
在线等,急急急急急急急急急

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧