一.QByteArray与char*的转换
1.方式1 传统方式data()和size()函数
QByteArray array(10, 'Q');//初始化
// 转化
char *buf;//只是一个指针
int len;//buf的长度
buf = array.data();
len = array.size();
2.方式2 memcpy()方式
QByteArray array(9,'Q');
char buf[10];//数组
int len_array = array.size();
int len_buf = sizeof(buf);
int len = qMin( len_array, len_buf );
// 转化
memcpy( buf, array, len );
二. char* 转 QByteArray
1.方法1 利用构造函数 (方便)
char buf[10];
// 转化
QByteArray array;
array = QByteArray(buf, 10);//因为buf[]中有`\0`,必须要写上数据长度;否则,数据会直接截断,丢失数据
2.方式2 memcpy()方式 (灵活)
char buf[10];
// 转化
QByteArray array;
array.resize(sizeof(buf));//重置数据大小
memcpy(array.data(), buf, sizeof(buf));//copy数据
三. int 与 QByteArray 互转
1.int转QByteArray
int intVar = 199;
//转化
QByteArray array;
int len_intVar = sizeof(intVar);
array.resize(len_intVar);
memcpy(array.data(), &intVar, len_intVar);
2.QByteArray 转 int[]
int outIntVar[4];
memcpy(&outIntVar, array.data(), len_intVar);
//memcpy(&outIntVar, array, len_intVar);//此行代码与上句通用
四.QString 与 char*相互转化
1.把QString 转化为 char*
先把QString类型变为QByteArray类型
从QByteArray类型再转为char* 类型
例子:
QString qStr = "abcd";
QByteArray qByteArray = qStr.toUtf8();
char* cStr = qByteArray.data();
qDebug()<<cStr<<endl;
2.把char* 转化为QString
char *转化为QString比较容易,可以直接使用 QString的构造函数
例子:
char *pCStr ="efgh";
QString qStr(pCStr);
qDebug()<<qStr.toUtf8().data()<<endl;