我正在开发一个项目,必须将 __int128 转换为 uint8_t 向量。
我已经有一个将 long 转换为 uint8_t 向量的函数。
我想做类似的事情:
__int128 data = 0x5bc5ddd975d34ed0b4f18b410e7d2480
addLong(data >> 64);
addLong(data & 0xFFFFFFFFFFFFFFFF);
Run Code Online (Sandbox Code Playgroud)
我得到的结果是: 00000000b4f18b41e7d2480
正如你所看到的,第二部分,64 个较低有效字节被正确处理,但大多数字节没有被正确处理。你知道这是否可能吗?
做类似的事情:
std::cout << std::hex << (long)(data >> 48) << std::endl;
Run Code Online (Sandbox Code Playgroud)
给我结果:b4f1。
这就是为什么我认为按位运算符不能与 __int128 一起使用。