Jos*_*ino 4 c++ bit-manipulation bitwise-operators bitwise-or
一段时间以来,我一直在努力处理一些低级别的消息,结果证明校验和计算存在问题.我认为按位XOR运算符不关心符号,所以我使用a QByteArray来存储字节,并使用at返回a 的方法char来计算校验和.这些消息有时被正确承认,但并非总是如此.
看起来另一端的人uint8_t用来存储字节,并且校验和在某些情况下失败了.我通过铸造char来解决它uint8_t,但我对此感到困惑.
为什么按位XOR运算符关心符号?不管他们代表什么,我认为它在某种程度上有效.这是我用来试图理解它的一段代码.
#include <stdio.h>
#include <stdint.h>
#include <iostream>
#include <bitset>
int main ()
{
uint8_t a = 0b10010101;
char b = 0b10010101;
uint32_t checksum;
checksum = 55;
checksum ^= a;
std::cout << std::bitset<32>(checksum) << std::endl;
checksum = 55;
checksum ^= b;
std::cout << std::bitset<32>(checksum) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
即使两个整数都保持相同的位,操作在每种情况下产生不同的结果.
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |