2

我正在使用 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 的函数,例如 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 设置中。我不知道为什么会这样,但现在已经解决了。

4

2 回答 2

2

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

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

之后您将需要应用它:

std::cout << std::dec;
于 2014-12-05T14:41:54.897 回答
1

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

std::cout << int(*bytePointer);
于 2014-12-05T14:32:40.243 回答