这不是跨平台代码... 所有操作都在同一个平台上执行(即字节序相同.. 小端)。
我有以下代码:
unsigned char array[4] = {'t', 'e', 's', 't'};<br>
unsigned int out = ((array[0]<<24)|(array[1]<<16)|(array[2]<<8)|(array[3]));
std::cout << out << std::endl;<br>
unsigned char buff[4];
memcpy(buff, &out, sizeof(unsigned int));<br>
std::cout << buff << std::endl;
我期望 buff 的输出是 "test"(由于缺少 '/0',会有一个垃圾尾随字符),但实际输出是 "tset"。显然,改变我移位的字符顺序(3、2、1、0 而不是 0、1、2、3)可以解决问题,但我不明白问题出在哪里。memcpy 是否没有按照我的期望操作?谢谢。