Tcp传入的16进制转16进制字符
关键点:char、QByteArray::toHex()、QByteArray::fromRawData()
知识点补充
- char在32bit或64bit系统中占一个1Byte
- char中实际存储的是数字,当存在字符时,会把字符转为ASCLL码中对应的数组,存储进内存中
- char占1Byte,即4bit,而一个16进制是2的4次方即需要4bit才能存储一个16进制,故一个char能存储2个16进制。
- 注意char与uchar的存储范围:
- char:-128127,hex:807F
- uchar:0255,hex:0FF
char中16进制转字符16进制
2种方法
方法1:使用QByteArray::fromRawData转化
ByteArray ss = QByteArray::fromRawData((const char*)data_struct_ptr_->data,data_len).toHex();
方法2:使用memcpy直接把char数据copy到QByteArray中
QByteArray ss3;
ss3.resize(data_len); //重新分配空间
memset((void*)(ss3.constData()),0,data_len ); //初始化空间
memcpy((void*)(ss3.constData()),(void*)(data_struct_ptr_->data),data_len); //copy
qDebug() << ss3.toHex(); //16进制字符串
END By Lvs
标签:字符,QByteArray,进制,16,char,data,Qt From: https://www.cnblogs.com/lvshen/p/18117350