memcpy与大小端
搬运自我的CSDN: https://blog.csdn.net/u013213111/article/details/100149145 参考: 大端 小端 与memcpy 网络字节序和大小端字节序 来看这样一段代码: 本意是想把uint8_t a[2]中的内容合成一个uint16_t b #include <stdlib.h> #include <stdio.h> #include <stdint.h> int main() { uint8_t a[2] = { 0x11, 0x22 }; uint16_t b; memcpy(&b, a, sizeof(b)); printf("a[0]:%x,a[1]:%x\n", a[0], a[1]); printf("b:%x\n", b); return 0; } 在intel的电脑上跑出来的结果如何呢: a[0]:11,a[1]:22 b:2211 也就是说,假如a[1]中存储的是高位byte,a[0]中存储的是低位byte,那么最终合成的uint16_t是正确的;而假如a[0]中存储的是高位byte,a[1]中存储的是低位byte,那么结果就是错误的了。 然而并不是所有的计算机系统都如此,而是要看系统是大端存储模式还是小端存储模式。 小端存储模式(小端字节序),指的是数据的高字节位置保存在内存的高地址处