为了账号安全,请及时绑定邮箱和手机立即绑定

就是两个十六进制数0xb1,0x32,只不过是存成CString类型的

就是两个十六进制数0xb1,0x32,只不过是存成CString类型的

C++
MMTTMM 2023-02-17 18:14:54
CString objNum="0xb10x32"我如何将这里的字符串转换成两个十六进制数,并存入一个char型数组?char objCharNum[2].
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

//字符串专char数组,strl为字符串,需要和函数HexChar(h搭配用
int Str2Hex(CString strl, char *data) 
{
int t,t1;
int rlen=0,len=strl.GetLength();
//data.SetSize(len/2);
for(int i=0;i<len;)
{
char l,h=strl[i];
if(h==' ')
{
i++;
continue;
}
i++;
if(i>=len)
{
break;
}
l=strl[i];
t=HexChar(h);
t1=HexChar(l);
if((t==16)||(t1==16))
{
break;
}
else 
{
t=t*16+t1;
}
i++;
data[rlen]=(char)t;
rlen++;
}
return rlen;
}

char 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 0x10;
}
}


查看完整回答
反对 回复 2023-02-20
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

具体的挺麻烦,给你说说思路吧,首先
CString objNum="0xb10x32";
CString num1,num2,temp;
temp=TrimLeft("Ox");//删除左边的Ox
num1=objNum.Left(temp.FindOneOf("Ox"));//假设不知道二进制的位数,num1=b1
num2=obkNum.Mid(temp.FindOneOf("Ox")+2);//num2=32
然后用转换函数转换对应的num1,num2就行了,好像是_atoi();
你查查,这个函数可以设置进制的
不行就自己写一个

查看完整回答
反对 回复 2023-02-20
  • 2 回答
  • 0 关注
  • 48 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信