memcpy字节序问题
Posted zhanggaofeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memcpy字节序问题相关的知识,希望对你有一定的参考价值。
/* 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]---\n", s); //打印 0x7d0c printf("--[%p]---\n", &s); //打印 0x7d0c /* 解释: 这是由于本机字节序决定的,本机是小端字节序,因此高位位于内存地址低位,所以打印s的值是0x7d0c,但是在内存中存储的仍然是0x0c7d,如果你实际想要的数据是0xc7d,必须通过位操作来完成 */ sb |= ((unsigned short)data[0] << 8); sb |= data[1]; printf("---sb=[%x]--------\n", sb); return 0; int main() test(); printf("-----ok------\n"); getchar(); return 0;
以上是关于memcpy字节序问题的主要内容,如果未能解决你的问题,请参考以下文章