【问题标题】:how to Display Hex data instead of text?如何显示十六进制数据而不是文本?
【发布时间】:2013-06-07 13:01:04
【问题描述】:

我正在使用串行编程与 GPS 设备通信 我正在使用二进制协议与之通信。它的工作方式是,在写入设备时,我每 1 秒接收一次数据流。我的问题是,当我轮询这些数据并将其打印出来时,我收到的是 ASCII 字符而不是 HEX 数据。我需要查看十六进制数据,以便解析它。这是我写的代码

  int Open_UBX()
{
  unsigned char PollPOSLLH[11] = {0xB5,0x62,0x06,0x01,0x03,0x00,0x01,0x02,0x01,0x0E,0x47};
  write(fd,&PollPOSLLH,11);
  }

  int   main(){
Open_UBX();
              while (c!='q')
            {
                   if (read(fd,&data,1)>0) 
                      {
                        write(STDOUT_FILENO,&data,1);   // if new data is available on the serial port, print it out


                    }

               if (read(STDIN_FILENO,&c,1)>0)  
                  {

                    write(STDOUT_FILENO,&c,1);    // if new data is available on the console, send it to the serial port

                  }
        }
        close(fd);
 return(0);
}

当然端口是打开的并且设置已配置但我的问题是数据没有显示为十六进制所以我无法解析它我只得到我不理解的字符

【问题讨论】:

    标签: c++ hex polling


    【解决方案1】:

    您可以使用 std::hex。这是一个小例子:

    int number = 23;
    std::cout << std::hex << number << std::endl;
    //result is 17
    

    编辑: 再想一想,我想起 std::hex 设置了一个标志,所以你使用它一次后打印的所有数字都将以十六进制格式打印。要恢复为十进制,请使用 std::dec。 示例:

    int number = 23;
    std::cout << std::hex << number << std::endl; //17
    std::cout << number << std::endl; //also 17
    std::cout << std::dec << number << std::endl; //23
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 2012-01-03
      • 2013-06-06
      • 2018-05-04
      • 2013-03-31
      • 1970-01-01
      相关资源
      最近更新 更多