我正在使用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设置下出现。我不知道它为什么会发生但现在已经修好了。
答案 0 :(得分:2)
正如其他人在评论中指出的那样,您将输出更改为十六进制,但实际上并未将其设置回此处:
std::cout << " (hex: "
<< std::hex
<< byteHex
<< ")\n";
之后你需要申请:
std::cout << std::dec;
答案 1 :(得分:1)
标准输出流将输出任何字符类型作为字符,而不是数字值。要输出数值,请转换为非字符整数类型:
std::cout << int(*bytePointer);