首页 > 其他分享 >Qt5.12实战之QByteArray与字符指针及字符串转换

Qt5.12实战之QByteArray与字符指针及字符串转换

时间:2023-03-20 10:33:00浏览次数:35  
标签:QByteArray ba unsigned test qDebug 指针 type Qt5.12




Qt5.12实战之QByteArray与字符指针及字符串转换_#include


示例源码:

#include <QCoreApplication>
#include <QDebug>
#include <QTextStream>
static QTextStream cout (stdout,QIODevice::WriteOnly);
#include <iostream>
#include <QtGlobal>
#include <QByteArray>

void test()
{
qDebug() << "HelloWorld-qdebug";
cout << "Helloword-QTextStream" <<endl;
std::cout<<"Helloword-std::cout"<<std::endl;
}

void test_types()
{
qint8 signed_char_type;//signed char 有符号8bit
qint16 signed_short_type;//signed short 有符号16bit
qint32 signed_int_type;//signed int 有符号32bit
qint64 signed_long_long_int_type;//signed long long int 有符号64bit

qDebug() <<"sizeof(qint8)=" <<sizeof (signed_char_type)
<<"sizeof(qint16)=" <<sizeof (signed_short_type)
<<"sizeof(qint32)=" <<sizeof(signed_int_type)
<<"sizeof(qint64)=" <<sizeof (signed_long_long_int_type)<<endl;;

qptrdiff qint32_or_qint64_type;//32位系统 qint32 64位系统 qint64
qreal double_or_float_type;//默认是double,如果加上-qreal float选项,那么是float
qintptr same_as_qptrdiff;//32位系统 qint32 64位系统 qint64
quintptr quint32_or_quint64_type;//32位系统 quint32 64位系统 quint64
qDebug() <<"sizeof(qptrdiff)=" <<sizeof (qint32_or_qint64_type)
<<"sizeof(qreal)=" <<sizeof (double_or_float_type)
<<"sizeof(qintptr)=" <<sizeof(same_as_qptrdiff)
<<"sizeof(quintptr)=" <<sizeof (quint32_or_quint64_type)<<endl;

quint8 unsigned_char_type;//unsigned char 无符号8bit
quint16 unsigned_short_type;//unsigned short 无符号16bit
quint32 unsigned_int_type;//unsigned int 无符号32bit
quint64 unsigned_long_long_int_type;//unsigned long long int 无符号64bit
qDebug() <<"sizeof(quint8)=" <<sizeof (unsigned_char_type)
<<"sizeof(quint16)=" <<sizeof (unsigned_short_type)
<<"sizeof(quint32)=" <<sizeof(unsigned_int_type)
<<"sizeof(quint64)=" <<sizeof (unsigned_long_long_int_type)<<endl;

qlonglong same_as_qint64_type;//相当于qint64
qulonglong same_as_quint64_type;//相当于quint64
qDebug() <<"sizeof(qlonglong)=" <<sizeof (same_as_qint64_type)
<<"sizeof(qulonglong)=" <<sizeof (same_as_quint64_type)<<endl;

uchar unsigned_char_type_same_quint8;//unsigned char 无符号8bit
ushort unsigned_short_type_same_quint16;//unsigned short 无符号16bit
uint unsigned_int_type_same_quint32;//unsigned int 无符号32bit
ulong unsigned_long_type;//unsigned long 无符号32bit
qDebug() <<"sizeof(uchar)=" <<sizeof (unsigned_char_type_same_quint8)
<<"sizeof(ushort)=" <<sizeof (unsigned_short_type_same_quint16)
<<"sizeof(uint)=" <<sizeof(unsigned_int_type_same_quint32)
<<"sizeof(ulong)=" <<sizeof (unsigned_long_type)<<endl;

}



void test_qbytearray()
{
QByteArray bArray("Hello QByteArray"); // '\0'
int len = bArray.length();
char cLast = bArray[17];
qDebug()<<"string len:"
<<len
<<"last char:"
<<cLast
<<endl;
}

void test_qbytearray_resize()
{
QByteArray ba;
ba.resize(3);
ba[0]=0x3c;
ba[1]=0xb8;
ba[2]=0x64;
qDebug()<<endl<<"ba length:"<<ba.length()<<endl;
}

void test_qbytearray_fill()
{
QByteArray ba("hello");
qDebug()<<"ba before fill:"<<ba<<endl;
ba.fill('K');
qDebug()<<"ba after fill:"<<ba<<endl;
ba.fill('K',2);
qDebug()<<"ba after fill two char:"<<ba<<endl;
ba.fill('Q',10);
qDebug()<<"ba after fill ten char Q:"<<ba
<<"qbytearray length:"<<ba.length()
<<"sizeof(ba)="<<sizeof (ba)<<endl //ba is a point of QByteArray
<<"sizeof(QByteArray[])="<<sizeof ( (char)ba[1])<<endl;
ba.data()[7]='A';
qDebug()<<ba.at(4)<<ba.data()[5]<<ba.constData()[7]<<endl;
}

void test_qbytearray_right_left_mid()
{
QByteArray ba("HelloWorld2023");
qDebug()<<ba.left(5);
qDebug()<<ba.right(4);
qDebug()<<ba.mid(5,5);
}

void test_qbytearray_size()
{
QByteArray ba("HelloWorld");
qDebug()<<ba.length();
qDebug()<<ba.size();
qDebug()<<ba.count();
QByteArray ba1("He\0llo");
qDebug()<<ba1.length();
}

void test_datatype_convert()
{
QByteArray ba("HelloWorld");
QByteArray ba_hex = ba.toHex();
qDebug() << "HelloWorld to Hex: "<<ba_hex<<endl; //48656c6c6f576f726c64

QByteArray ba_fromhex = QByteArray::fromHex("48656c6c6f576f726c64");
qDebug() << "QByteArray from Hex: "<<ba_fromhex<<endl;

int digit = 255;
uint u_digit = 255u;
qlonglong qll_digit = 255ll;
qulonglong qull_digit = 255ull;
qDebug()<<"number base 10 on int :"<< QByteArray::number(digit);
qDebug()<<"number base 10 on uint :"<<QByteArray::number(u_digit);
qDebug()<<"number base 10 on qlonglong :"<<QByteArray::number(qll_digit);
qDebug()<<"number base 10 on qulonglong :"<<QByteArray::number(qull_digit);

qDebug()<<"number base 10 on int :"<< QByteArray::number(78);
qDebug()<<"number base 10 on uint :"<<QByteArray::number(78u);
qDebug()<<"number base 10 on qlonglong :"<<QByteArray::number(78ll);
qDebug()<<"number base 10 on qulonglong :"<<QByteArray::number(78ull);

qDebug()<<"number base 10 on int :"<< QByteArray::number(digit,16);
qDebug()<<"number base 10 on uint :"<<QByteArray::number(u_digit,16);
qDebug()<<"number base 10 on qlonglong :"<<QByteArray::number(qll_digit,16);
qDebug()<<"number base 10 on qulonglong :"<<QByteArray::number(qull_digit,16);

qDebug()<<"number base 10 on int :"<< QByteArray::number(digit,8);
qDebug()<<"number base 10 on uint :"<<QByteArray::number(u_digit,8);
qDebug()<<"number base 10 on qlonglong :"<<QByteArray::number(qll_digit,8);
qDebug()<<"number base 10 on qulonglong :"<<QByteArray::number(qull_digit,8);

qDebug()<<"number base 10 on int :"<< QByteArray::number(digit,2);
qDebug()<<"number base 10 on uint :"<<QByteArray::number(u_digit,2);
qDebug()<<"number base 10 on qlonglong :"<<QByteArray::number(qll_digit,2);
qDebug()<<"number base 10 on qulonglong :"<<QByteArray::number(qull_digit,2);

QByteArray num;
qDebug()<<"QByteArray::setNum base 10 on int :"<< num.setNum(digit);
qDebug()<<"QByteArray::setNum base 10 on uint :"<<num.setNum(u_digit);
qDebug()<<"QByteArray::setNum base 10 on qlonglong :"<<num.setNum(qll_digit);
qDebug()<<"QByteArray::setNum base 10 on qulonglong :"<<num.setNum(qull_digit);

qDebug()<<"QByteArray::setNum base 10 on int :"<< num.setNum(digit,16);
qDebug()<<"QByteArray::setNum base 10 on uint :"<<num.setNum(u_digit,16);
qDebug()<<"QByteArray::setNum base 10 on qlonglong :"<<num.setNum(qll_digit,16);
qDebug()<<"QByteArray::setNum base 10 on qulonglong :"<<num.setNum(qull_digit,16);

qDebug()<<"QByteArray::setNum base 10 on int :"<< num.setNum(digit,8);
qDebug()<<"QByteArray::setNum base 10 on uint :"<<num.setNum(u_digit,8);
qDebug()<<"QByteArray::setNum base 10 on qlonglong :"<<num.setNum(qll_digit,8);
qDebug()<<"QByteArray::setNum base 10 on qulonglong :"<<num.setNum(qull_digit,8);

qDebug()<<"QByteArray::setNum base 10 on int :"<< num.setNum(digit,2);
qDebug()<<"QByteArray::setNum base 10 on uint :"<<num.setNum(u_digit,2);
qDebug()<<"QByteArray::setNum base 10 on qlonglong :"<<num.setNum(qll_digit,2);
qDebug()<<"QByteArray::setNum base 10 on qulonglong :"<<num.setNum(qull_digit,2);

double dbNum=12345.66;
qDebug()<<"number base 10 on double of e format(prec=6) :"<< QByteArray::number(dbNum,'e');
qDebug()<<"number base 10 on double of e format(prec=3) :"<< QByteArray::number(dbNum,'e',3);
qDebug()<<"number base 10 on double of E format(prec=6) :"<< QByteArray::number(dbNum,'E');
qDebug()<<"number base 10 on double of e format(prec=3) :"<< QByteArray::number(dbNum,'E',3);
qDebug()<<"number base 10 on double of f format(prec=6) :"<< QByteArray::number(dbNum,'f');
qDebug()<<"number base 10 on double of f format(prec=3) :"<< QByteArray::number(dbNum,'f',3);
qDebug()<<"number base 10 on double of f format(prec=3) :"<< QByteArray::number(dbNum,'f',1);
qDebug()<<"number base 10 on double of g format(prec=6) :"<< QByteArray::number(dbNum,'g');
qDebug()<<"number base 10 on double of g format(prec=3) :"<< QByteArray::number(dbNum,'g',3);
qDebug()<<"number base 10 on double of G format(prec=6) :"<< QByteArray::number(dbNum,'G');
qDebug()<<"number base 10 on double of G format(prec=3) :"<< QByteArray::number(dbNum,'G',3);

QByteArray abc="HelloWorld";
qDebug()<<"HelloWorld ->toLower() : "<<abc.toLower();
qDebug()<<"HelloWorld ->toUpper() : "<<abc.toUpper();

QByteArray strNum="-123456";
QByteArray strNumU="123456";
qDebug()<<"strNum ->toInt() : "<<strNum.toInt();
qDebug()<<"strNum ->toUInt() : "<<strNumU.toUInt();


bool isBase=false;
QByteArray strDigit="255";
QByteArray strBin="11111111";
qDebug()<<"digit ->toInt() base on 10 : "<<strDigit.toInt(&isBase)<<",isBase:"<<isBase;
qDebug()<<"digit ->toInt() base on 16 : "<<strDigit.toInt(&isBase,16)<<",isBase:"<<isBase;
qDebug()<<"digit ->toInt() base on 8 : "<<strDigit.toInt(&isBase,8)<<",isBase:"<<isBase;
qDebug()<<"digit ->toInt() base on 2 : "<<strBin.toInt(&isBase,2)<<",isBase:"<<isBase;

QByteArray strDouble="3.14159";
qDebug()<<"strDouble ->toDouble() : "<<strDouble.toDouble(&isBase)<<",isBase:"<<isBase;
qDebug()<<"strDouble ->toFloat() : "<<strDouble.toFloat(&isBase)<<",isBase:"<<isBase;
qDebug()<<QByteArray::number(strDouble.toDouble());
qDebug()<<QByteArray::number(strDouble.toDouble(),'g');
qDebug()<<QByteArray::number(strDouble.toDouble(),'g',3);
qDebug()<<QByteArray::number(strDouble.toDouble(),'G');
qDebug()<<QByteArray::number(strDouble.toDouble(),'G',3);
qDebug()<<QByteArray::number(strDouble.toDouble(),'f');
qDebug()<<QByteArray::number(strDouble.toDouble(),'f',3);
qDebug()<<QByteArray::number(strDouble.toDouble(),'e');
qDebug()<<QByteArray::number(strDouble.toDouble(),'e',3);
qDebug()<<QByteArray::number(strDouble.toDouble(),'E');
qDebug()<<QByteArray::number(strDouble.toDouble(),'E',3);
}

typedef struct User{
int id;
std::string name;
}USER;

void test_qbytearray_charpoint_std_string_qstring()
{
USER u;
u.id=1001;
u.name="hello";

QByteArray arr;
arr.append((char*)&u,sizeof (u));

USER *pUser = (USER*)arr.data();
qDebug() <<pUser->id<<pUser->name.c_str();

QByteArray ba("HelloWorld");
char *pBa = ba.data();
qDebug() << pBa;
qDebug() << *pBa;
while (*pBa) {
qDebug()<< "item of Array : " << *pBa;
++pBa;
}
char *p = &ba.data()[5];
qDebug() <<p;

std::string str = ba.toStdString();
qDebug()<<"std::string ->"<<str.c_str();

QByteArray baStd = QByteArray::fromStdString(std::string("this is a std string"));
qDebug()<<"fromStdString ->"<<baStd;

QString qstr = QString("HelloWorld");
qDebug()<<"QString to QByteArray ->"<<qstr.toLatin1();
QByteArray tmpBa = "flkdsjlkfjkdsjfldsjkfjk";
qstr=tmpBa;
qDebug()<<qstr;

if(tmpBa.isEmpty())
{
qDebug()<<"";
}
if(QByteArray("").isEmpty())
{
qDebug()<<"";
}
if(QByteArray().isEmpty())
{
qDebug()<<"";
}


}

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
test();
test_types();
test_qbytearray();
test_qbytearray_resize();
test_qbytearray_fill();
test_qbytearray_right_left_mid();
test_qbytearray_size();

test_datatype_convert();
test_qbytearray_charpoint_std_string_qstring();
return a.exec();
}

标签:QByteArray,ba,unsigned,test,qDebug,指针,type,Qt5.12
From: https://blog.51cto.com/remotedev/6132092

相关文章

  • Qt5.12实战之字节数组QByteArray使用
    示例源码:#include<QCoreApplication>#include<QDebug>#include<QTextStream>staticQTextStreamcout(stdout,QIODevice::WriteOnly);#include<iostream>#inclu......
  • 双指针算法
    一、常见类型(1)对于一个序列,用两个指针维护一段区间(如:快排) (2)对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作(如:归并排序) 二、模板1for(i......
  • 初始指针
    指针是什么?在计算机科学中,指针(pointer)编程语言的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量......
  • 华丽的市区2“指针”
    今日份学习“指针”本文简介:该篇文章进一步讲解指针的运用方式,且如何避免野指针的出现。一,简单回顾:指针是一个变量,主要存放内存单元的地址,存放在指针中的值都被当成地址处......
  • C++指针总结
    在程序运行时分配的内存空间是需要在运行中释放的,这部分内存称之为堆。智能指针不用自己释放内存,只要没有指针指向内存了,就会自动释放。下面是两种智能指针:shared_ptr允......
  • P35-P37指针6,7,8
    步骤一:char*p1="if";char*p2="for";char*p3="while";......
  • P32-P34指针3,4,5
    代码区代码栈 参数,局部变量全局变量 全局变量可读,可写常量区 常量区可读,不可写常量字符串的拷贝:voidFunction(){char*x="china";chary[]="china";*(x+......
  • 智能指针
    智能指针指针注1管理的困境是什么资源释放了但是指针没有为空野指针:野指针是指指向未知内存地址的指针,也就是没有初始化或者已经被释放的指针。使用野指针会导致......
  • 11、指针和引用
    指针:是一个变量,存储一个变量的地址。引用:是变量的别名。1、初始化指针定义时不必初始化,引用必须初始化。指针初始化时可为NULL,引用不能初始化为NULL。inta=1......
  • 2816. 判断子序列(双指针模板题)
    https://www.acwing.com/problem/content/2818/双指针模板题:i指针只有匹配到相等才++,j指针无论如何每次都++那么i==n时,意味着b序列中存在着a序列,且有序离散存放#inclu......