std :: cout给出了qDebug的不同输出

时间:2014-12-05 14:21:19

标签: c++ qt cout qtcore qdebug

我正在使用Qt,我有一个unsigned char *bytePointer并想要打印出当前字节的数字值。下面是我的代码,它用于给出从连接到计算机的计算机接收的连续字节的int值和十六进制值:

int byteHex=0;
byteHex = (int)*bytePointer;

qDebug << "\n  int: " //this is the main issue here. 
          << *bytePointer;

std::cout << " (hex:  "
          << std::hex
          << byteHex
          << ")\n";

}

这给出了完美的结果,我得到了实际的数字,但是这段代码进入了API,我不想使用Qt-only函数,比如qDebug。所以,当我尝试这个时:

int byteHex=0;
byteHex = (int)*bytePointer;

std::cout << "\n  int: " //I changed qDebug to std::cout
          << *bytePointer;

std::cout << " (hex:  "
          << std::hex
          << byteHex
          << ")\n";

}

输出确实完美地给出十六进制值,但int值返回符号(如☺,└,§,列举一些)。

我的问题是:如何让std::cout提供与qDebug相同的输出?

编辑:由于某种原因,符号仅在某个Qt设置下出现。我不知道它为什么会发生但现在已经修好了。

2 个答案:

答案 0 :(得分:2)

正如其他人在评论中指出的那样,您将输出更改为十六进制,但实际上并未将其设置回此处:

std::cout << " (hex:  "
          << std::hex
          << byteHex
          << ")\n";

之后你需要申请:

std::cout << std::dec;

答案 1 :(得分:1)

标准输出流将输出任何字符类型作为字符,而不是数字值。要输出数值,请转换为非字符整数类型:

std::cout << int(*bytePointer);