Qt中char数组转16进制字符

Tcp传入的16进制转16进制字符

关键点:char、QByteArray::toHex()、QByteArray::fromRawData()


知识点补充

  1. char在32bit或64bit系统中占一个1Byte
  2. char中实际存储的是数字,当存在字符时,会把字符转为ASCLL码中对应的数组,存储进内存中
  3. char占1Byte,即4bit,而一个16进制是2的4次方即需要4bit才能存储一个16进制,故一个char能存储2个16进制。
  4. 注意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

posted @   Labant  阅读(553)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示