QT 十六进制字符串转二进制字符串

本文详细介绍了如何使用QByteArray的fromHex方法将十六进制字符串转换为字节数组,并通过位操作逐位提取二进制表示。重点讲解了左移操作和位与操作在这一过程中的应用。
摘要由CSDN通过智能技术生成

一. 十六进制字符串转为字节字符串


        QByteArray 自带从十六进制字符串转为QByteArray的方法(hexStr)为十六进制字符串
QByteArray byteArray = QByteArray::fromHex(hexStr);

因为QByteArray存储的是char,而char刚好是一个字节八位,我们byteArray 进行判断即可

QString binaryStr;
    for (char byte : byteArray) {
        for (int i = 7; i >= 0; --i) {
            binaryStr.append((byte & (1 << i)) ? '1' : '0');
        }
    }

这段代码我们对byteArray进行循环,挨个取出char,在对取出来的char进行按位与操作把获得的字符添加到binaryStr里,就获得了一个二进制的字符串;
 

这里,1 << i 是将数字1左移 i 位。左移操作相当于乘以2的i次方。例如,如果 i 是3,1 << 3 的结果就是8(二进制中的 1000)。

然后,b & (1 << i) 使用位与操作(&)来检查 b 的第 i 位是否为1。如果 b 的第 i 位是1,那么 (1 << i) 在相应的位置也会是1,因此位与操作的结果在那个位置上也会是1。否则,结果在那个位置上将是0。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值