//QByteArray转十六进制格式显示"1">>"31" 0x06>>"06" 10>>"0A"
QByteArray data;
QString ret(data.toHex().toUpper());//toUpper()大写
QString ret(data.toHex());
QString MainWindow::ByteArrayToHexString(QByteArray data){
QString ret(data.toHex().toUpper());int len = ret.length()/2;//插入空格
for(int i=1;i
int data=1512; //"05e8"
QString strsend48503=QString("%1").arg(data,4,16,QLatin1Char('0'));//int型或char型都可
data,//原数据
4, //一共要多少字符
16, //数据进制
QLatin1Char('0')//左侧不足位补什么字符
方法2
int m=0x31;
QString string;
string=QString::number(m,16);//31
QByteArray byte;
byte.resize(2);
byte[0]=0x31;
byte[1]=0x32;
QString string =byte; // string="12"
int m=0x31;
QString string;
string[0]=m;
qDebug()<
先转为Qstring吧
或者用于计算的话可以直接使用QByteArray计算,使用数组索引的方式QByteArray与普通char一样用
char ch=0x0C;
QByteArray string;
string.resize(5);
string[0]=0x01; //01
string[1]=ch; //0C
string[2]=++ch; //0D
string[3]=ch&0xF0; //00
string[4]=ch|0xF0; //FD
qDebug()<
这个比较麻烦,只能用逐个字节比对的方式
/*
描述:把两个十六进制字符一个十六进制字节
'a','A'>>0xAA
*/
char charToHex(char H,char L)
{
if((H >= '0') && (H <= '9'))
H-='0';
else if((H >= 'A') && (H <= 'F'))
H=H-'A'+10;
else H='*';
if((L >= '0') && (L <= '9'))
L-='0';
else if((L >= 'A') && (L <= 'F'))
L=L-'A'+10;
else L='*';
return ((H&0x0F)<<4)|(L&0x0F);
}
/*
描述:把一个十六进制字符串转化为十六进制数数组
"01 15 26 581512">>{0x01,0x15,0x26,0x58,0x15,0x12}
*/
char* dataTypeConversion::hexStr_To_Hexchar(QString data)
{ //"19885984ac418df"
static char re[200];
for(int re_num=0;re_num<200;re_num++)
{re[re_num]=0;}
int Lenth,cnt=0;
data.remove(' '); //删除字符串中的空格
data=data.toUpper();
Lenth=data.length(); //获取长度
if(Lenth%2==1)
{
data+="0";
Lenth++;
}
std::string ch = data.toStdString();
const char*p = ch.c_str();
char high = 0, low = 0;
int i=0;
for (cnt=0; cnt
QString ret(data.toHex().toUpper());//转为16进制大写 QByteArray.toHex() 转为十六进制字符 '1'>>"31"
/*
描述:把一个十六进制字符串转化为十六进制数数组
"123456">>{0x31,0x32,0x33,0x34,0x35,0x36}
*/
//mode :2显示0x 0:显示空格
QString dataTypeConversion::strToHexstr(QByteArray data,int mode)
{
QString ret(data.toHex().toUpper());//转为16进制大写 QByteArray.toHex() 转为十六进制字符 '1'>>"31"
int len = ret.length()/2;
if(mode==2)
{
ret.insert(0,"0X");
for(int i=1;i
数值上直接把QString作为数组计算即可