c语言CString转数字函数,CString与16进制的CByteArray之间相互转化

//将单个字符转为相应的16进制数,否则返回16

char Hex2Char(char ch)

{

if((ch>='0')&&(ch<='9'))

return   ch-0x30;

else   if((ch>='A')&&(ch<='F'))

return   ch-'A'+10;

else   if((ch>='a')&&(ch<='f'))

return   ch-'a'+10;

else   return  16;

}

//将CS中的字符串转为存储16进制数的CByteArray类型Hexs

//按照字符串中16进制字符进行转换,忽略所有非16进制字符

void CS2CB(CString &CS,CByteArray &Hexs)

{

INT_PTR len = CS.GetLength();

INT_PTR Len(0);//最终字节长度

Hexs.SetSize(len/2);

Hexs.RemoveAll();

BYTE HexH,HexL;//十六位的高低字节

//BYTE HexD(0);//十六进制数据

for( int k=0; k

{

if((HexH=Hex2Char(CS.GetAt(k)))<16)//找到一个字符为16进制数字为高位

{

do

{

k++;

}while(k

if(k

{

Hexs.Add(HexH*16+HexL);

Len++;

}

else

{

//找不到低位,则只有低位(高位变低位)

Hexs.Add(HexH);

Len++;

}

}

}

Hexs.SetSize(Len);

}

//将存储在CByteArray中的16进制数组,转化为表示16进制数的CString类型字符串

void CB2CS( CByteArray &Hex,CString &dst)

{

dst.Empty();

int k(0),len(Hex.GetSize());

for(;;)

{

dst.AppendFormat(_T("%x"),Hex.GetAt(k));

if(++k

dst.Append(_T("-"));

else

break;

}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值