/* memcpy用法详解 */ #include <stdio.h> #include <stdlib.h> #include <string.h> //memcpy字节序问题 int test() { unsigned char data[2] = { 0xc,0x7d }; unsigned short s = 0; unsigned short sb = 0; memcpy(&s, data, sizeof(unsigned short)); printf("--[%x]--- ", s); //打印 0x7d0c printf("--[%p]--- ", &s); //打印 0x7d0c /* 解释: 这是由于本机字节序决定的,本机是小端字节序,因此高位位于内存地址低位,所以打印s的值是0x7d0c,但是在内存中存储的仍然是0x0c7d,如果你实际想要的数据是0xc7d,必须通过位操作来完成 */ sb |= ((unsigned short)data[0] << 8); sb |= data[1]; printf("---sb=[%x]-------- ", sb); return 0; } int main() { test(); printf("-----ok------ "); getchar(); return 0; }