Qt5将字符转换为8位无符号值

时间:2016-01-07 18:33:13

标签: c++ qt qbytearray

我有两种方法可以将字符转换为代表8位字节值的字符。在第一个中,它给出了正确的答案,但在第二个中它给出了额外的0,所以我不得不ba.size()-1。 我的问题是为什么我必须在第二个中做到这一点?我知道这很可能是/ 0终止符。如果我没错?还有更好的方法吗?

    // very simple test if we can take bytes and get them in decimal (0-255)format:
    QByteArray ba("down came the glitches and burnt us in ditches and we slept after we ate our dead...");
    for (int i = 0; i < ba.size(); ++i)
    qDebug() << "Bytes are: "<< static_cast<quint8>(ba[i]);
    // very simple second way to do it...
    int j = 0;
    while (j < ba.size()-1){
    qDebug() << "Bytes are: "<< static_cast<quint8>(ba[++j]);
}

1 个答案:

答案 0 :(得分:3)

不同之处在于无效使用增量操作。当您使用++j时,您已经拥有了值1,因此您永远不会获得0索引。此外,您获得的最后一个索引大于数组大小。正确的方法是:

qDebug() << "Bytes are: "<< static_cast<quint8>(ba[j++]);