600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > mfc如何将16进制数据转换为字符串 – java – 前端

mfc如何将16进制数据转换为字符串 – java – 前端

时间:2020-02-16 19:24:45

相关推荐

mfc如何将16进制数据转换为字符串 – java – 前端

int i = 100;

CString str;

str.Format(_T("0X%08X"), i);

大写X代表大写表示,08代表用8个0填充。

HexChar函数的功能是将16进制字符由ASCII码转为相应大小的16进制数

char HexChar(char c)

{

if((c>=)&&(c<=9))

return c-;//将?0-9的Ì?数ºy字Á?字Á?符¤?转Áa为a十º?六¢¨´进?制?格?式º?

else if((c>=A)&&(c<=F))

return c-A+10;//将?A-F的Ì?字Á?符¤?转Áa为a十º?六¢¨´进?制?格?式º?例¤y如¨?字Á?符¤?C-A+10=12=0x0C

else if((c>=a)&&(c<=f))

return c-a+10;//将?a-f的Ì?字Á?符¤?转Áa为a十º?六¢¨´进?制?格?式º?

else

return 0x10;

}

Str2Hex函数的功能则是将如“66 03 …”形式的字符串以空格为间隔转换为对应的16进制数并存放在BYTE型(typdef unsigned char BYTE)数组中,data数组作为发送缓冲数组写入串口即可。

int Str2Hex(CString str, BYTE *data)

{

int t,t1;

int rlen=0,len=str.GetLength();

if(len==1)

{

char h=str[0];

t=HexChar(h);

data[0]=(BYTE)t;

rlen++;

}

//data.SetSize(len/2);

for(int i=0;i<len;)

{

char l,h=str[i];

if(h== )

{

i++;

continue;

}

i++;

if(i>=len)

break;

l=str[i];

t=HexChar(h);

t1=HexChar(l);

if((t==16)||(t1==16))//判D断?为a非¤?法¤¡§的Ì?16进?制?数ºy

break;

else

t=t*16+t1;

i++;

data[rlen]=(BYTE)t;

rlen++;

}

return rlen;

}

对于接收到的数据,位于接收缓冲区的BYTE数组RecBuf中,如果要以相应大小的16进制形式显示,刚可以将数组中每一个元素以下列格式转换并放入字符串RecText中,即可实现以16进制显示。

CString RecText,str;

for(int i=0;i<Rlen;i++)

{

str.Format("%02X ",RecBuf[i]);//将接收到的BYTE型数据转换为对应的十六进制

RecText.Append(str);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。