Si el artículo es un artículo original, indique la fuente del artículo original al reproducirlo.
La dirección del blog de este artículo: https://hpzwl.blog.csdn.net/article/details/131434492
Columna de desarrollo Qt: consejos prácticos
necesidad
Desarrolle la comunicación de posicionamiento GPS de Beidou y redefina un conjunto de protocolos personalizados en el protocolo de " aplicación de comunicación ($TXSQ) ". El contenido de la comunicación implica la transmisión en chino, que debe codificarse de acuerdo con la herramienta Beidou.
principio
El protocolo de comunicación Beidou gps es en realidad tres modos: un carácter chino, un código, y el código se divide en código puro y mixto. El modo de código es en realidad conversión de código GBK para la parte visualizada.
Al diseñar un protocolo personalizado, es necesario distinguir entre la transmisión mixta de instrucciones (los bytes de instrucción no se visualizan y se requiere GBK a Huanu para analizarlos en contenido de diálogo).
método de conversión
Es un método de procesamiento de talla única que realiza directamente la conversión de codificación GBK que ignora la codificación local para el contenido visual definido en el protocolo.
#include <QApplication>
#include <QTextCodec>
#include <QDebug>
#include <QDateTime>
//#define LOG qDebug()<<__FILE__<<__LINE__
//#define LOG qDebug()<<__FILE__<<__LINE__<<__FUNCTION__
//#define LOG qDebug()<<__FILE__<<__LINE__<<QThread()::currentThread()
//#define LOG qDebug()<<__FILE__<<__LINE__<<QDateTime::currentDateTime().toString("yyyy-MM-dd")
#define LOG qDebug()<<__FILE__<<__LINE__<<QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz")
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString str = QString("你好1234");
#if 1
// 1.无视本地编码
// 2.强制本地转换为GBK编码
LOG << "内容:" << str;
QTextCodec *pTextCodec = QTextCodec::codecForName("GBK");
QByteArray data = pTextCodec->fromUnicode(str);
LOG << "转换为GBK编码:" << QString(data.toHex(' '));
#endif
#if 1
// 1.GBK编码转换为本地编码
// 2.无视本地编码
// QTextCodec *pTextCodec = QTextCodec::codecForName("GBK");
pTextCodec = QTextCodec::codecForName("GBK");
str = pTextCodec->toUnicode(data);
LOG << "转换为本地文本:" << str;
#endif
return a.exec();
}
Si el artículo es un artículo original, indique la fuente del artículo original al reproducirlo.
La dirección del blog de este artículo: https://hpzwl.blog.csdn.net/article/details/131434492