QByteArray的1字节int转换如何失败?

时间:2017-04-20 13:00:23

标签: qt

所以这就是问题,我从蓝牙传输接收1个字节。使用QDebug时,我收到此消息:

The array with error has "\x06"

失败的一行是:

    bool ok = true;
    int v = value.toInt(&ok,0);

因为okfalse。但是我试图围绕这样一个事实:如果在该字节中表示的数据(作为一个零和一的序列)将始终具有有效的整数表示,那么转换如何首先失败。 (一个字节总是可以表示为-127到128之间的int)。所以我留下了问题,转换怎么会失败?

阅读文档并没有提供很多线索,因为它没有说明如何解释字节数组。

1 个答案:

答案 0 :(得分:0)

QByteArray::toInt将默认C语言环境中的字符串表示形式转换为整数。这意味着要成功转换示例中的值,您的字节数组必须包含字符串"0x06",其中包含4个字节。

要将单个字节转换为int,只需将其解压缩:

int i = value[0];

类型提升会将char扩展为int