gpt4 book ai didi

c++ - 将 uint64_t 截断为 uint8_t[i] 时是否应该使用位掩码?

转载 作者:可可西里 更新时间:2023-11-01 18:35:34 25 4
gpt4 key购买 nike

如果我有一个大的 int,比如一个 uint64_t 和一个 uint8_t 数组,例如:

uint64_t large = 12345678901234567890;
uint8_t small[5];

并且我想将 uint64_t 的 8 个最低有效位复制到 uint8_t 数组的一个元素中,是否可以安全地使用:

small[3] = large;

或者我应该使用位掩码:

small[3] = large & 255;

即是否存在大 int 的其余部分可能以某种方式溢出到数组的其他元素中的情况?

最佳答案

它肯定不会导致数据被错误处理。但是,某些编译器可能会生成警告消息。

有两种选择可以避免这些。

你可以转换你的变量:

(uint8_t)large

或者您可以禁用警告:

#pragma warning(disable:4503)

我建议转换变量,因为隐藏编译器警告可能会阻止您发现实际问题,因此不是最佳做法。

关于c++ - 将 uint64_t 截断为 uint8_t[i] 时是否应该使用位掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36439777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com