QByteArray初始化总结

以下是几种常见的 QByteArray 初始化方案的总结,包括适用场景、优缺点和推荐使用的场合:


1. 直接字符串初始化

QByteArray arr("\x7f\x05\x02\x00\x33");
优点:
  • 简洁直观。
  • 适合小型的、固定格式的字节序列。
缺点:
  • 如果包含 \0 字节,容易出现截断问题(需要显式指定长度)。
  • 可读性较差,不易理解和维护。
适用场景:
  • 初始化少量的、固定的字节数据。

2. 动态追加 (append)

QByteArray arr;
arr.append(0x7f);
arr.append(0x05);
arr.append(0x02);
arr.append(0x00);
arr.append(0x33);
优点:
  • 逐步构造,便于动态添加数据。
  • 数据直观明确。
缺点:
  • 相比其他方法,代码稍显冗长。
  • 不适合一次性初始化大量数据。
适用场景:
  • 数据内容需要动态构造(如循环追加或从外部获取字节数据)。

3. 使用 QByteArray::fromHex

QByteArray arr = QByteArray::fromHex("7f 05 02 00 33");
优点:
  • 十六进制字符串易读易维护,便于理解和更新。
  • 不会因 \0 造成截断问题。
缺点:
  • 仅适合表示十六进制格式的字节序列。
  • 如果字符串输入无效(包含非十六进制字符或奇数长度),会返回空数组,需要额外检查。
适用场景:
  • 初始化固定的、已知的字节数据(如协议命令、配置信息)。

推荐使用场景

方法是否动态可读性适用场景
直接字符串初始化★★★小型固定数据,数据无 \0
动态追加 (append)✔️★★数据需要动态添加或分步构造。
QByteArray::fromHex★★★★★十六进制格式的固定数据,易读易维护。

总结

  1. 固定数据(不含 \0): QByteArray::fromHex 是最佳选择,简单且可读性强。
  2. 固定数据(可能含 \0): 使用 QByteArray::fromRawData 并指定长度。
  3. 动态构造: 使用 appendQDataStream,视数据复杂性选择。
  4. 高级需求: 如需复杂数据流处理,优先选择 QDataStream
  5. 还是QByteArray::fromHex 在上位机开发中使用最为简便。

根据实际需求,选择最合适的方案即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值