QByteArray和十六进制的QString(char*)相互转换

 1 #include <QCoreApplication>
 2 #include <QDebug>
 3 #include <QDataStream>
 4
 5 QByteArray HexStringToByteArray(QString HexString)
 6 {
 7     bool ok;
 8     QByteArray ret;
 9     HexString = HexString.trimmed();
10     HexString = HexString.simplified();
11     QStringList sl = HexString.split(" ");
12
13     foreach (QString s, sl) {
14         if(!s.isEmpty()) {
15             char c = s.toInt(&ok,16)&0xFF;
16             if(ok){
17                 ret.append(c);
18             }else{
19                 qDebug()<<"非法的16进制字符:"<<s;
20             }
21         }
22     }
23     return ret;
24 }
25
26 QString ByteArrayToHexString(QByteArray &ba)
27 {
28     QDataStream out(&ba,QIODevice::ReadWrite);   //将str的数据 读到out里面去
29     QString buf;
30     while(!out.atEnd())
31     {
32         qint8 outChar = 0;
33         out >> outChar;   //每次一个字节的填充到 outchar
34         QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char(‘0‘)).toUpper() + QString(" ");   //2 字符宽度
35         buf += str;
36     }
37     return buf;
38 }
39
40 int main(int argc, char *argv[])
41 {
42     QCoreApplication a(argc, argv);
43     char cmd[7] = {0x40, 0x00, 0x00, 0x01, 0x00, 0x41, 0x0A};
44     char* cmdString = "40 00 00 01 00 41 0a";
45     QByteArray cmdBA = HexStringToByteArray(cmdString);
46     qDebug()<<ByteArrayToHexString(cmdBA);
47
48     return a.exec();
49 }

原文地址:https://www.cnblogs.com/ch122633/p/8393406.html

时间: 2024-09-10 21:12:59

QByteArray和十六进制的QString(char*)相互转换的相关文章

QString, Std::string, char *相互转换

Qt 库中对字符串类型进行了封装,QString 类提供了所有字符串操作方法,给开发带来了便利. 由于第三方库的类型基本上都是标准的类型,即使用std::string或char *来表示字符 (串) 类型,因此在Qt框架下需要将QString转换成标准字符 (串) 类型.下面介绍QString, Std::string, char *相互转换转换方法. std::string和char *的相互转换 1.  将char *或char[]转换为std::string 可直接赋值 std::stri

Qt中Qstring,char,int,QByteArray之间到转换(转)

11.各种数据类型的相互转换char * 与 const char *的转换char *ch1="hello11";const char *ch2="hello22";ch2 = ch1;//不报错,但有警告ch1 = (char *)ch2; char 转换为 QString其实方法有很多中,我用的是:char a='b';QString str;str=QString(a); QString 转换为 char方法也用很多中QString str="ab

CString, QString, char*之间的转换(包括VC编译开关)

传给未分配内存的const char* (LPCTSTR)指针. CString cstr(asdd); const char* ch = (LPCTSTR)cstr; ch指向的地址和cstr相同.但由于使用const保证ch不会修改,所以安全.2.传给未分配内存的指针. CString cstr = "ASDDSD"; char *ch = cstr.GetBuffer(cstr1.GetLength() + 1); cstr.ReleaseBuffer(); //修改ch指向的值

C++-Qt【5】-QT的QString,char*,QByteArray转化以及中文乱码的问题

引用:http://blog.sina.com.cn/s/blog_a7e2c7490101oatt.html QTextCodec *codec = QTextCodec::codecForName("GBK");//指定QString的编码方式 QString str=codec->toUnicode(con);//con可以是char*,可以是QByteArray.

C/C++ 十六进制char*与Binary char*相互转换

1. 十六进制char* 转 Binary char* 例如:"fedcba9876543210" 转换为:char bin[8] ={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}形式. 代码: /*两个字符转换成一个字符,长度为原来的1/2*/ static void Hex2Char(char *szHex, unsigned char *rch) { int i; for(i=0; i<2; i++) { if(*(szHex + i)

java中String\十六进制String\byte[]之间相互转换函数

java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */ public static byte[] hexStringToByte(String hex) { int len = (hex.length() / 2); byte[] result = new byte[len]; char[] achar = hex.toCharArray(); for (i

Unicode字符集下CString与char *相互转换

经常遇到CString转换char*时只返回第一个字符.原因是因为在Unicode字符集下CString会以Unicode的形式来保存数据,强制类型转换只会返回第一个字符.所以直接转换在基于MBCS的工程可以,但在基于Unicode字符集的工程中直接转换是不可行的.下面就具体看一下,在Unicode字符集下如下进行CString与char*的互相转换. 在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:M

string、const char*、 char* 、char[]相互转换

转化总结如下: 源格式 目标格式 string const char* char* char[] string NULL const char*=string.c_str(); const char*=string.c_str(); char*=<const_cast><char*>(const char*); for(int i=0;i< string.length();i++) { char[i]=string[];} const char* string =const

Qt中QString,int,char,QByteArray之间相互转换

http://blog.csdn.net/ymc0329/article/details/7284514 int  转 QString int m=1; QString b; b=QString::number(m) QString 转int QString a="1111" int b; b=a.toInt() char 转换为 QString char a='b'; QString str; str=QString(a); QString 转换为 char QString str=