【发布时间】:2023-01-10 02:24:53
【问题描述】:
我正在做一个项目,我必须将 __int128 转换为 uint8_t 的向量。
我已经有一个将 long 转换为 uint8_t 向量的函数。
我想做类似的事情:
__int128 data = 0x5bc5ddd975d34ed0b4f18b410e7d2480
addLong(data >> 64);
addLong(data & 0xFFFFFFFFFFFFFFFF);
结果我得到了这个:00000000b4f18b41e7d2480
如您所见,第二部分,即 64 个低位字节被正确处理,但大多数字节未被正确处理。
你知道这是否可能吗?
做这样的事情:
std::cout << std::hex << (long)(data >> 48) << std::endl;
给我结果:b4f1。
这就是我认为按位运算符不适用于 __int128 的原因。
【问题讨论】:
标签: c++ bit-manipulation