如何在不丢失 C++ 信息的情况下将 uint64_t
转换为 uint8_t[8]
?
我尝试了以下方法:
uint64_t number = 23425432542254234532;
uint8_t result[8];
for(int i = 0; i < 8; i++) {
std::memcpy(result[i], number, 1);
}
最佳答案
你快到了。首先,文字 23425432542254234532
太大,无法放入 uint64_t
。
其次,从文档中可以看出,std::memcpy
有以下声明:
void * memcpy ( void * destination, const void * source, size_t num );
如您所见,它以指针(地址)作为参数。不是 uint64_t
,也不是 uint8_t
。您可以使用寻址运算符轻松获取整数的地址。
第三,您只是将整数的第一个字节复制到每个数组元素中。您需要在每次迭代中增加输入指针。但是循环是不必要的。您可以像这样一次性复制所有字节:
std::memcpy(result, &number, sizeof number);
请注意字节顺序取决于 endianness CPU 的。
关于c++ - 将 uint64_t 转换为 uint8_t[8],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35153015/