将 Qvector<uint8_t> 转换为 QString
Casting Qvector<uint8_t> to QString
我想将对应于字符的十六进制值的 uint8_t 向量转换为字符串。但我无法将矢量转换为字符串。请帮助
我的代码:
#include <QVector>
#include <QApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QVector<uint8_t> vec;
vec.push_back(51);
vec.push_back(32);
vec.push_back(123);
QString message = "";
qDebug()<<vec.at(0);
for(int counter=0;counter<vec.length();counter++){
message=vec.at(counter)+ message;
}
qDebug()<<message;
//w.show();
return a.exec();
}
使用QString::fromUtf8()
或QString::fromLatin1()
立即进行转换。
你的问题对我来说仍然很模糊,但据我了解你想要 qDebug()
以十六进制输出数字。
因此可以通过 QByteAray
完成。可能的实现:
#include <QVector>
#include <QCoreApplication>
#include <QDebug>
#include <algorithm>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QVector<uint8_t> vec;
vec.push_back(51);
vec.push_back(32);
vec.push_back(123);
QByteArray data;
std::copy( vec.begin() , vec.end() , std::back_inserter( data ) );
qDebug() << data.toHex( ' ' );
return a.exec();
}
输出为:
33 20 7b
也可以使用 QString::number( your_value , 16 ) 将单个数字转换为十六进制表示形式的字符串。这里的16代表base
。
#include <QCoreApplication>
#include <QDebug>
#include <algorithm>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QVector<uint8_t> vec;
QString message;
QByteArray hex;
vec.push_back(65);
vec.push_back(72);
vec.push_back(73);
vec.push_back(84);
QByteArray data;
std::copy( vec.begin() , vec.end() , std::back_inserter( data ) );
hex=data.toHex();
qDebug() << hex+ " ";
qDebug()<<message.fromUtf8(data);
return a.exec();
}
这样的事情可能会有所帮助(只需要将 std::vector 替换为 qvector):
// Example program
#include <iostream>
#include <string>
#include <vector>
#include <stdint.h>
int main()
{
std::vector<uint8_t> vec;
vec.push_back(51);
vec.push_back(32);
vec.push_back(123);
std::vector<char> result;
for (auto v: vec)
{
char c = v;
result.push_back(c);
}
std::string s(result.begin(), result.end());
std::cout << s;
}
我想将对应于字符的十六进制值的 uint8_t 向量转换为字符串。但我无法将矢量转换为字符串。请帮助 我的代码:
#include <QVector>
#include <QApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QVector<uint8_t> vec;
vec.push_back(51);
vec.push_back(32);
vec.push_back(123);
QString message = "";
qDebug()<<vec.at(0);
for(int counter=0;counter<vec.length();counter++){
message=vec.at(counter)+ message;
}
qDebug()<<message;
//w.show();
return a.exec();
}
使用QString::fromUtf8()
或QString::fromLatin1()
立即进行转换。
你的问题对我来说仍然很模糊,但据我了解你想要 qDebug()
以十六进制输出数字。
因此可以通过 QByteAray
完成。可能的实现:
#include <QVector>
#include <QCoreApplication>
#include <QDebug>
#include <algorithm>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QVector<uint8_t> vec;
vec.push_back(51);
vec.push_back(32);
vec.push_back(123);
QByteArray data;
std::copy( vec.begin() , vec.end() , std::back_inserter( data ) );
qDebug() << data.toHex( ' ' );
return a.exec();
}
输出为:
33 20 7b
也可以使用 QString::number( your_value , 16 ) 将单个数字转换为十六进制表示形式的字符串。这里的16代表base
。
#include <QCoreApplication>
#include <QDebug>
#include <algorithm>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QVector<uint8_t> vec;
QString message;
QByteArray hex;
vec.push_back(65);
vec.push_back(72);
vec.push_back(73);
vec.push_back(84);
QByteArray data;
std::copy( vec.begin() , vec.end() , std::back_inserter( data ) );
hex=data.toHex();
qDebug() << hex+ " ";
qDebug()<<message.fromUtf8(data);
return a.exec();
}
这样的事情可能会有所帮助(只需要将 std::vector 替换为 qvector):
// Example program
#include <iostream>
#include <string>
#include <vector>
#include <stdint.h>
int main()
{
std::vector<uint8_t> vec;
vec.push_back(51);
vec.push_back(32);
vec.push_back(123);
std::vector<char> result;
for (auto v: vec)
{
char c = v;
result.push_back(c);
}
std::string s(result.begin(), result.end());
std::cout << s;
}