作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果我有一个大的 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/
我是一名优秀的程序员,十分优秀!