一. 十六进制字符串转为字节字符串
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。