在写串口通信的小程序的时候,发送数据比较好用十六进制发送,但是想接收(用ReadFile函数)数据也用十六进制接收,请问怎么办?有windows的函数提供这个功能么?
比如字符串是“#1”对应“23 31”。最好能直接转换为二进制的。
求帮助,谢谢!!

解决方案 »

  1.   

    ReadFile也是一样的啊, 默认就是读取字节, 一个字节就是二进制的8位啊。 
      

  2.   


    不好意思哈,没怎么懂,我的代码是:char str[6];
    memset(str,'\0',6);
    DWORD dwBytesRead=6;//需要读取字6个字节
    BOOL bReadStat;ClearCommError(hCom,&dwErrorFlags,&ComStat);
    dwBytesRead=min(dwBytesRead, (DWORD)ComStat.cbInQue);
    bReadStat=ReadFile(hCom,str,
    dwBytesRead,&dwBytesRead,&m_osRead);
    if(!bReadStat)
    {
    MessageBox(_T("读取错误"));
    }PurgeComm(hCom, PURGE_TXABORT|
    PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);m_disp = str;
    UpdateData(FALSE);将str打印出来就是类似于出来符号,还有汉字,应该是asicc码了。出来的并不是16进制或者二进制的字符串。
    请问应该怎么写呢,谢谢!
      

  3.   


    LPCTSTR Hex2Asc(BYTE bVal) 
    {
      static TCHAR ascVal[] = {0,0, 0,0};
      _stprintf_s(ascVal, _T("%02X "), bVal);
      return ascVal;
    }