当前位置: 首页 > wzjs >正文

网站建设与运营的公司wordpress底部版权插件

网站建设与运营的公司,wordpress底部版权插件,建设网站技术人员先进事迹,重庆城市建设网站QByteArray 是 Qt 框架中用于处理原始字节数据的核心类&#xff0c;其实质可以概括为以下几点&#xff1a; 1. 底层数据结构 • 连续内存块&#xff1a;存储一段连续的字节数据&#xff08;char*&#xff09;&#xff0c;类似 std::vector<char>&#xff0c;但针对 Qt 框…

QByteArray 是 Qt 框架中用于处理原始字节数据的核心类,其实质可以概括为以下几点:


1. 底层数据结构

连续内存块:存储一段连续的字节数据(char*),类似 std::vector<char>,但针对 Qt 框架做了优化。
自动内存管理:内部自动分配和释放内存,无需手动管理。
隐式共享(写时复制):使用 Implicit Sharing 技术,多个 QByteArray 对象共享同一份数据,直到修改时才进行深拷贝,以节省内存和计算资源。


2. 核心特性

二进制数据支持:可存储任意二进制数据(如图片、音频、协议数据),不依赖字符编码。
与 C 字符串兼容:数据默认以 \0 结尾,可通过 data()constData() 直接获取 const char* 指针,方便与 C 函数交互。
动态大小:支持动态扩容(如 append()resize()),无需预分配固定大小。


3. 主要用途

网络通信:序列化/反序列化数据(如通过 QNetworkRequest 发送二进制内容)。
文件 I/O:读写二进制文件(如 QFile::readAll() 返回 QByteArray)。
编码转换:作为 QString 与编码(如 UTF-8、Latin-1)之间的桥梁(例如 QString::toUtf8() 返回 QByteArray)。
加密/哈希:处理加密后的二进制结果(如 QCryptographicHash 的哈希值)。


4. 与 QString 的区别

特性QByteArrayQString
数据本质原始字节(charUnicode 字符(QChar,UTF-16)
编码感知无(直接处理字节)有(自动处理 Unicode 转换)
适用场景二进制数据、协议、文件文本处理、用户界面显示
C 字符串兼容性直接兼容(data()需转换(toUtf8()

5. 关键方法示例

// 创建并初始化
QByteArray data("Hello");  // 内容: 'H' 'e' 'l' 'l' 'o' '\0'// 追加数据
data.append(0x41);         // 追加字节 0x41(ASCII 'A')// 获取指针
const char* cstr = data.constData(); // 指向 "HelloA\0"// 转换为十六进制字符串
QByteArray hex = data.toHex(); // "48656c6c6f41"// 内存共享验证
QByteArray copy = data;    // 隐式共享,不复制数据
copy[0] = 'h';             // 触发写时复制,data 和 copy 数据分离

6. 性能与注意事项

高效操作:避免频繁调用 data() 获取指针,可能导致隐式共享分离。
二进制安全:可包含 \0 字节,size() 返回实际数据长度(不包括结尾的 \0)。
编码转换:与 QString 互转时需明确编码(如 fromUtf8()toLatin1())。


常用接口
QByteArray::fromHex() 的输入参数类型是 QByteArray


详细说明

函数签名

static QByteArray QByteArray::fromHex(const QByteArray &hexEncoded);

输入必须是一个 QByteArray 对象。

常见用法
• 直接传入 QByteArray
cpp QByteArray hexData = "48656c6c6f"; // 十六进制字符串 QByteArray data = QByteArray::fromHex(hexData);
• 若使用 QString 作为输入,需先转换为 QByteArray(例如用 toLatin1()toUtf8()):
cpp QString hexStr = "48656c6c6f"; QByteArray data = QByteArray::fromHex(hexStr.toLatin1());


参数要求

  1. 内容必须是有效的十六进制字符串
    • 仅允许字符 0-9a-fA-F
    • 其他字符(如空格、gx 等)会被自动忽略。

  2. 处理奇数字符长度
    • 如果输入字符串长度为奇数,fromHex() 会自动在最前面补零,使其成为偶数长度。
    • 例如:输入 "123" 会被当作 "0123" 解析。


示例

// 示例1:直接使用 QByteArray
QByteArray hex1 = "31393231"; // 对应 "19121" 的十六进制
QByteArray a1 = QByteArray::fromHex(hex1);
// 结果: a1 = "19121", size = 5// 示例2:使用 QString 转换
QString hexStr2 = "31393231";
QByteArray a2 = QByteArray::fromHex(hexStr2.toUtf8());
// 结果: a2 = "19121", size = 5// 示例3:奇数字符长度
QByteArray hex3 = "abc"; // 奇数长度
QByteArray a3 = QByteArray::fromHex(hex3);
// 解析为 "0abc",结果: a3 = "\x0a\xbc"

常见错误

直接传递 QString

QString hexStr = "31393231";
QByteArray data = QByteArray::fromHex(hexStr); // 错误!类型不匹配

必须先将 QString 转换为 QByteArray(例如 hexStr.toLatin1())。

包含非十六进制字符

QByteArray hexData = "1g2h"; // 'g' 和 'h' 无效
QByteArray data = QByteArray::fromHex(hexData); // 自动忽略无效字符,解析为 "12"

QByteArray::fromHex() 的补零规则:
QByteArray a = QByteArray::fromHex(QString::toLatin1("19121"));size 为 3


详细步骤解析

  1. 输入字符串处理
    QString::toLatin1("19121") 将字符串 "19121" 转换为 Latin-1 编码的 QByteArray,其字节内容为 0x31 0x39 0x31 0x32 0x31(对应 ASCII 字符 '1' '9' '1' '2' '1')。

  2. fromHex() 的转换规则
    fromHex() 将输入的字符串视为十六进制编码数据,每两个字符转换成一个字节
    • 若输入长度为奇数,自动在最前面补零使其成为偶数长度。
    • 对于输入 "19121"(长度为 5,奇数):
    ◦ 补零后等效于 "019121"(长度为 6,偶数)。
    ◦ 分组为 "01""91""21"

  3. 转换结果
    "01"0x01
    "91"0x91
    "21"0x21
    • 最终 QByteArray a 包含 3 字节:[0x01, 0x91, 0x21],故 a.size() = 3


验证代码

QByteArray hexData = QString::toLatin1("19121"); // 内容: "19121" (5字节)
QByteArray a = QByteArray::fromHex(hexData);
qDebug() << a.size(); // 输出: 3
qDebug() << a.toHex(); // 输出: "019121"(实际存储的字节为 0x01 0x91 0x21)

关键点

fromHex() 的输入必须是有效的十六进制字符(0-9a-fA-F),其他字符会被忽略。
• 补零规则确保奇数字符串能正确解析,避免数据截断。


文章转载自:

http://dvNGtRpF.wqbzt.cn
http://TbtX1fAt.wqbzt.cn
http://EYhWDQbd.wqbzt.cn
http://c1E8e1a7.wqbzt.cn
http://D77XGMKD.wqbzt.cn
http://sPwRYrON.wqbzt.cn
http://tJup5AjP.wqbzt.cn
http://Yk5HppvW.wqbzt.cn
http://JBaCaZ3r.wqbzt.cn
http://yBKR38RE.wqbzt.cn
http://zyF1zsJ9.wqbzt.cn
http://Zrrjb4RK.wqbzt.cn
http://2eh34d3G.wqbzt.cn
http://uOu3VEo5.wqbzt.cn
http://HyQk0uy6.wqbzt.cn
http://WoRO8MSx.wqbzt.cn
http://oohs2ZJA.wqbzt.cn
http://RgGY0S85.wqbzt.cn
http://h6moE5s7.wqbzt.cn
http://AdrzUo4V.wqbzt.cn
http://OrMZv7zW.wqbzt.cn
http://CQN3JuE3.wqbzt.cn
http://mP5ZVArD.wqbzt.cn
http://xMXZsuae.wqbzt.cn
http://1U6O3ZnB.wqbzt.cn
http://YIoh5112.wqbzt.cn
http://sgTaYn7Y.wqbzt.cn
http://JqHytFjA.wqbzt.cn
http://DAFLjsSu.wqbzt.cn
http://pB26FRfn.wqbzt.cn
http://www.dtcms.com/wzjs/729999.html

相关文章:

  • 酒店网站建设范文为什么点不开网站
  • 鄂尔多斯市住房和城乡建设厅网站有没有做长图的网站
  • 深圳市潮流网络是不是外包站长工具的使用seo综合查询运营
  • 网站建设英语翻译wordpress 免费吗
  • 网站建设教程模板wordpress 新闻列表
  • 机构网站建设番禺软件公司
  • 珠海建设银行官方网站门头沟手机网站建设
  • 双鱼儿 网站建设北京网站开发工程师
  • cpa推广做网站音乐网站制作策划书
  • 济南网站建设就选搜点网络ok如何建设网站赚钱
  • 网站 网页区别网站 展示
  • 腾讯云网站搭建怎样申请网站呢
  • 白银市城市建设设计院网站一家做公司点评网站
  • 泰塔科技网站建设网站首页模板下载
  • 怎样做淘宝网站中秋节ppt免费模板下载
  • 济南市住建厅官方网站wordpress 扫码付款
  • 邢台开发区网站青白江做网站的公司
  • 广州外贸网站建设曲靖今天最新通知
  • 北京中燕建设公司网站网络品牌推广策略
  • -邵阳网络公司-邵阳网站建设|邵阳网站制作什么是网站链接优化
  • 做网站都有什么功能手机网站关键词排名
  • 网站建设加盟培训免费的正能量视频素材网站
  • 柳州网站建设柳州网站建设维护费摊销
  • 阳谷聊城网站优化宁波网络推广运营公司电话
  • 湖北建站wordpress后台能修改模板文件
  • 电子商务网站开发与实训答案wordpress 网站 seo
  • 西城做网站公司网站建设沈阳公司
  • 怎么创建公司网站英语ppt模板免费下载 素材
  • 最早做网站的那批人广西住房和城乡建设厅
  • 高密网站开发百度如何把网站做链接