rui*_*eco 1 c++ bit-manipulation
我有两个无符号字符向量:
std::vector<uint8_t> a = {'\xac', '\xf9', '\xe1', 'o', 'R', '5', 'M', '\x9b', '\x13', 'I', '2', '%', 'W', ',', '\xd0', 't', '\xde', '\x94', '\xb3', '+'};
Run Code Online (Sandbox Code Playgroud)
和
std::vector<uint8_t> b = {'7','\x8e',';','\xca','\xc6','\xc7','B','b','x','z','\x89','i','P','\xa3','%','\x86','\xdb','^','\xdb','\x9f'};
Run Code Online (Sandbox Code Playgroud)
如何对这些向量的内容进行异或?我可以将它们投射到int吗?
我建议您使用std::valarray<T>而不是std::vector<T>为此,它已经以元素方式定义了所有按位和算术运算符。
那么你的数据将是
#include <valarray>
std::valarray<uint8_t> a = { 0xacu, 0xf9u, 0xe1u, 'o', 'R', '5', 'M', 0x9bu, 0x13u, 'I', '2', '%', 'W', ',', 0xd0u, 't', 0xdeu, 0x94u, 0b3u, '+'};
std::valarray<uint8_t> b = {'7', 0x8eu, ';', 0xcau, 0xc6u, 0xc7u, 'B', 'b', 'x', 'z', 0x89u, 'i', 'P', 0xa3u, '%', 0x86u, 0xdbu, '^', 0xdbu, 0x9fu};
Run Code Online (Sandbox Code Playgroud)
和异或将很简单
auto c = a ^ b;
Run Code Online (Sandbox Code Playgroud)