C++如何从一个cstring字符串中两两提取,转换成相应十六进制数呢

2024-12-14 19:46:36
推荐回答(3个)
回答1:

你这个是不是类似读串口。
我认为应该使用指针。
void main()
{
int val;
while(1)
{
//取得一次的字符串,char *ch="1012097D5D7D5EE5"
char *p=ch;
while(*p)
{
sscanf(p,"%2x",&val);
printf("%d",val);
p+=2;
}
}
}

回答2:

这是一个长整型吧
char *p="1012097D5D7D5EE5";
long l=0;
int i;
for(;*p!=0;)
{
char c=*p++;
if(c>0x39)
c-=0x3f;
else
c-=0x30;
l<<=4;
l+=c;
}

回答3:

举个短的例子,比如CString strTemp = "10FFEE",
BYTE bt1 = 0;
BYTE bt2 = 0;
BYTE bt3 = 0;
sscanf( strTemp.GetBuffer( strTemp.GetLenght() ), "%2x%2x%2x", &bt1, &bt2, &bt3 );
结果在bt1,bt2,bt3里,十六进制的...