我现在做一个串口通信的程序,我的数据包,字符显示是"%"3f“,改为16进制显示是:“fe fe fe 68 25 03 11 22 33 66 86",请问各位高手,现在定义一个char buf[11],怎么样将数据包数据提取转换为buf[0]=0xfe,buf[1]=0xfe,buf[2]=0xfe...buf[10]=0x66,buf[11]=0x86,我试了很多方法,但水平有限,请各位高手帮忙。

解决方案 »

  1.   

    把char buf[11]改成BYTE buf[11]。
      

  2.   

    不需要转换。数组中的数据就是buf[0]=0xfe,buf[1]=0xfe,buf[2]=0xfe...
    只是你调试的时候是根据代码中定义的数据类型来查看的,如果是char型,会当作字符串来显示,改成BYTE型就不会当作字符串来显示了。另外char表示有符号数,BYTE表示无符号数,对于char型数据,0xfe会被当作是-2,有些时候会导致错误的结果,用BYTE就没问题。
      

  3.   


    你是在哪儿看的→内存?界面?内存中本来就是你说的样子,无须任何改变!
    如果是界面要显示成你所说的样子,那得自己做转换!char chHexInside[4];
    sprintf(chHexInside, "%02X", buf[i]);然后界面显示chHexInside就行了。
      

  4.   

    char chHexInside[4];
    sprintf(chHexInside, "%02X", buf[i]);
    同意5楼
      

  5.   

    谢谢楼上,我知道了。我在处理的时候遇到一个问题,就是buf[8]怎么样变,读出的值总是0xcc,不知道为什么?其他的值都是对的。