标签: qbytearray

QByteArray到QString

QByteArray和他有问题QString.

我正在读取文件并将其信息存储在一个文件中QByteArray.该文件是unicode,因此它包含以下内容:t\0 e\0 s\0 t\0 \0 \0

我试图将此值与我的指定值进行比较,但它失败了,因为在调试器中我看到它不是unicode字符串.

代码将解释一切:

QByteArray Data; //contains unicode string "t\0 e\0 s\0 t\0 \0 \0"
QString myValue = "test"; //value to compare.
if(Data.contains(myValue))
    //do some stuff.
else
    //do other stuff.
Run Code Online (Sandbox Code Playgroud)

在调试器中,它向我显示变量Data具有值"t\0 e\0 s\0 t\0 \0 \0"myValue具有值"test".我该如何解决?

c++ qstring qt qbytearray qtcore

35
推荐指数
6
解决办法
9万
查看次数

Qt C++ QString到QByteArray转换

我创建了一个加密/解密程序,加密时我将加密的QByteArray存储在一个文本文件中.

在尝试解密时,我检索它然后将其放入解密方法,问题是我需要一种方法将其转换为QByteArray 而不更改格式,否则它将无法正确解密.我的意思是,如果文件给我一个1234的加密值,我将1234.toLatin1()它转换为QByteArray,它改变了值,解密不起作用.有什么建议?

我的代码:

QFile file(filename);
    QString encrypted;
    QString content;

    if (file.open(QIODevice::ReadOnly)) {
        QTextStream stream( &file );
        content = stream.readAll();
    }

    encrypted = content.replace("\n", "");

    qDebug() << encrypted; // Returns correct encrypted value

    QByteArray a;
    a += encrypted;

    qDebug() << "2 " + a; // Returns different value than previous qDebug()

    QByteArray decrypted = crypto.Decrypt(a, key);
    return decrypted;
Run Code Online (Sandbox Code Playgroud)

c++ qstring qt qbytearray

21
推荐指数
2
解决办法
5万
查看次数

qDebug不打印包含二进制数据的完整QByteArray

我有一个QByteArray存储从GPS接收的数据,这是部分二进制和部分ASCII.我想知道调试提案知道收到了什么,所以我写的qDebug是这样的:

//QByteArray buffer;
//...
qDebug() << "GNSS msg (" << buffer.size() << "): " << buffer;
Run Code Online (Sandbox Code Playgroud)

我在控制台上收到这样的消息:

GNSS msg ( 1774 ): "ygnnsdgk...(many data)..PR085hlHJGOLH
(more data into a new line, which is OK because it is a new GNSS sentence and
probably has a \n at the end of each one) blablabla...
Run Code Online (Sandbox Code Playgroud)

但突然间我得到了一个新的打印迭代.数据尚未删除,已附加.所以新的消息大小例如3204,明显比之前的打印大.但它打印完全相同(但括号之间的新尺寸3204).没有打印新数据,只是与上一条消息相同:

GNSS msg ( 3204 ): "ygnnsdgk...(many data)..PR085hlHJGOLH
(more data into a new line, which is OK because it is a new GNSS sentence …
Run Code Online (Sandbox Code Playgroud)

c++ qt qdebug qbytearray

12
推荐指数
1
解决办法
1万
查看次数

QByteArray通过QWebChannel在Javascript中看作是一个String

使用QWebChannel从QtWebKit迁移到QtWebEngine.

我有一个可调用的函数,它将QVariant对象发送到Javascript,它被视为JSON对象.因此,一个QString变成了string,一个QInt一个int,等等.

在没有QWebChannel的情况下使用QtWebKit,QByteArray被视为a Uint8ClampedArray,但现在直接转换为string使用UTF-8(我的QByteArray不是:())

我做错什么了吗 ?我该怎么办 ?

这是相关的代码部分:

//Qt Window class signal to javascript
void MyWindow::uplink(Response msg)
{
    emit _nativeToJs(msg->toJson());
}



//Response class toJson() method
QVariantMap Response::toJson() const
{
    QVariantMap map;

    map["id"] = m_id; //qulonglong
    map["src"] = QString(m_src);
    map["dst"] = QString(m_dst);
    map["status"] = m_status; //qint16
    map["result"] = m_result; //QVariant, can be a map of string, arrays, etc

    return map;
}


//Javascript 

var foo;
new QWebChannel(qt.webChannelTransport, function(channel) {
    //we connect …
Run Code Online (Sandbox Code Playgroud)

javascript qbytearray qtwebengine

12
推荐指数
1
解决办法
585
查看次数

仅使用4个字节将整数存储到QByteArray

它需要4个字节来表示整数.如何将inta 存储在一个QByteArray只需4个字节的位置?

  • QByteArray::number(..) 将整数转换为字符串,从而占用超过4个字节.
  • QByteArray((const char*)&myInteger,sizeof(int)) 似乎也没有用.

c++ qt integer qbytearray

9
推荐指数
1
解决办法
1万
查看次数

如何将QImage转换为QByteArray?

我试图从QImage创建QByteArray,但是虽然我尝试了很多varient,但我无法处理它.

我在做的是:

QImage img_enrll; // <--- There is an image coming from another function. 

QByteArray arr((char*)img_enrll.bits(),img_enrll.byteCount());  // <-- convertion but I am not sure it is true or not. 

funcCheck((unsigned char*)arr.data(), arr.size(), 0, &sam, 1, &n);


virtual Error funcCheck (const uint8_t    src[],
                           size_t           src_len,
                           size_t           tout_ms,
                           IRawSample*      dst[],
                           size_t           dst_len,
                           size_t*          dst_n )
Run Code Online (Sandbox Code Playgroud)

但是,错误代码返回无效数据.我认为将QImage转换为QByteArray是错误的.请你能帮我转换成QByteArray吗?

c++ qt qtgui qimage qbytearray

9
推荐指数
2
解决办法
7252
查看次数

如何在 PySide2 中将 QByteArray 转换为 python 字符串

我有一个PySide2.QtCore.QByteArray对象叫做roleName我编码了一个 python 字符串:

propName = metaProp.name() // this is call of [const char *QMetaProperty::name() ](https://doc.qt.io/qt-5/qmetaproperty.html#name)
// encode the object
roleName = QByteArray(propName.encode())
print(roleName) // this gives b'myname'
// now I would like to get just "myname" without the "b" 
roleString = str(roleName)
print(roleString) // this gives the same output as above
Run Code Online (Sandbox Code Playgroud)

如何取回解码后的字符串?

python string python-3.x qbytearray pyside2

9
推荐指数
1
解决办法
4202
查看次数

有没有更短的方法来初始化QByteArray?

在我的程序中,我通过串行通信工作很多,因此QByteArray经常使用.

我想知道是否有一个更短的方法来初始化QByteArray特定字节比:

const char test_data[] = {
    static_cast<char>(0xB1), static_cast<char>(0xB2),
    0x5, static_cast<char>(0xFF),
    static_cast<char>(0xEE), static_cast<char>(0xEE),
    static_cast<char>(0x0)}; // Note QByteArray should be able to hold 0 byte
const QCanBusFrame frame = QCanBusFrame(0xA1, QByteArray(test_data));
Run Code Online (Sandbox Code Playgroud)

static_cast<char>是必要的,因为否则C++ 11会出现关于缩小的错误,因为0x7F到0xFF的范围大于a char可能适合的范围 - 但是a charQByteArray构造函数要求的.

这是使用的QByteArray构造函数:

QByteArray::QByteArray(const char *data, int size = -1)

c++ qt qbytearray c++11 qt5.6

8
推荐指数
4
解决办法
1万
查看次数

QBitArray到QByteArray

当我们用这个文本"ali ata bak"创建一个文本文件时,我们使用这个文件作为程序的输入.代码正常运行.但是当我们在文本文件中输入"1111111111111111111111"这个文本时,Code没有运行预期.那有什么问题呢?

#include <QtCore/QCoreApplication>
#include <QBitArray>
#include <QByteRef>
#include <QFile>
#include <iostream>
#include <stdlib.h>
#include <QTextStream>

// Buffer Size #num of KB's
#define BUFFER_SIZE_KB 1

// Do not change !!
#define BUFFER_SIZE_BYTE BUFFER_SIZE_KB*1024
#define BUFFER_SIZE_BIT  BUFFER_SIZE_BYTE*8

using namespace std;


QBitArray bytesToBits(QByteArray bytes) {
    QBitArray bits(bytes.count()*8);
    // Convert from QByteArray to QBitArray
    for(int i=0; i<bytes.count(); ++i)
        for(int b=0; b<8; ++b)
            bits.setBit(i*8+b, bytes.at(i)&(1<<b));
    return bits;
}


QByteArray bitsToBytes(QBitArray bits) {
    QByteArray bytes;
    bytes.resize(bits.count()/8);
    // Convert from QBitArray to QByteArray
    for(int b=0; …
Run Code Online (Sandbox Code Playgroud)

c++ qt qbytearray

7
推荐指数
1
解决办法
6134
查看次数

与readAll()相比,QSerialPort readLine()极慢

我从串口读取的数据(在Qt中,使用QtSerialPort/QSerialPort)由换行符'\n'分隔并返回'\ r'字符,这是我打算查看它进行解析的方式.行长可能很长,但很容易从每行的格式中提取数据.

//signal/slot connection on readyRead() is as follows:
connect(serial, SIGNAL(readyRead()), this, SLOT(readData()));
Run Code Online (Sandbox Code Playgroud)

其中readData()定义为:

void MainWindow::readData()
{
   //As mentioned below, which I will reiterate, I have already tried the addition of 
   // canReadLine():
   if (serial->canReadLine()){
     QByteArray data = serial->readLine();
     //QByteArray allData = serial->readAll();
     parseSerialBytes(data);
     //console->putData(data);
     //console->putData(alldata);
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,与QIODevice :: readAll()相比,该QIODevice::readLine()函数非常慢,并且明显阻止数据以全频率接收

有人可以解释如何正确使用该readLine()功能,所以我不必循环readAll()进入QByteArray解析每一行?我使用"终端"Qt Widgets示例来创建此异步串行端口读取功能.

在此先感谢 - 这似乎是我在这里尚未看到的常见问题.

c++ qt qbytearray qt5 qtserialport

7
推荐指数
1
解决办法
4224
查看次数