[英]c++ - store byte[4] in an int
我想要一个包含4个字节的字节数组,并将其存储在一个int中。
例如(非工作代码):
unsigned char _bytes[4];
int * combine;
_bytes[0] = 1;
_bytes[1] = 1;
_bytes[2] = 1;
_bytes[3] = 1;
combine = &_bytes[0];
我不想使用移位将字节放入int中,我想指向字节存储器,并在可能的情况下将它们用作int。
在Standard C ++中,不可能可靠地执行此操作。 严格的别名规则表示,当您读取类型为int
的表达式时,它实际上必须指定一个int
对象(或const int
等),否则会导致未定义的行为。
但是,您可以执行相反的操作:声明一个int
然后填写字节:
int combine;
unsigned char *bytes = reinterpret_cast<unsigned char *>(&combine);
bytes[0] = 1;
bytes[1] = 1;
bytes[2] = 1;
bytes[3] = 1;
std::cout << combine << std::endl;
当然, 从中获得哪个值取决于系统如何表示整数。 如果要让代码在不同的系统上使用相同的映射,则不能使用内存别名。 您必须改用方程式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.