gpt4 book ai didi

c++ - 负 8 位 int 的 Qt 十六进制表示?

转载 作者:行者123 更新时间:2023-11-27 23:06:25 25 4
gpt4 key购买 nike

Similar question但是,我正在寻找 qt 解决方案。

我正在寻找一种将 8 位负整数转换为十六进制表示的方法。这个例子会更好地解释它。

qint8 width = - 100;
qDebug() << QString::number(width, 16);

// "ffffffffffffff9c"

输出远远超过 2 个字节。

但是,当我将其更改为无符号时,它工作正常。

quint8 width = - 100;
qDebug() << QString::number(width, 16);

// "9c"

文档指出:

typedef quint8

Typedef for unsigned char. This type is guaranteed to be 8-bit on allplatforms supported by Qt.


typedef qint8

Typedef for signed char. This type is guaranteed to be8-bit on all platforms supported by Qt.

unsigned 不应该不能处理负数吗?

最佳答案

问题是 QString::number可以接受intuint类型。它没有 8 位整数的版本,因此它们被隐式转换为更大的整数。它适用于有符号整数,因为前导零已被删除。

但是您可以使用 QDataStream , 它提供了 operator <<对于多种类型:

QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);
qint8 width = - 100;
stream << width;
qDebug() << buffer.toHex();
// output: "9c"

关于c++ - 负 8 位 int 的 Qt 十六进制表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23265645/

25 4 0
文章推荐: C++上限值计算
文章推荐: html - 如何在 HTML 中进行基本身份验证?
文章推荐: javascript - 在