码迷,mamicode.com
首页 > 其他好文 > 详细

memcpy字节序问题

时间:2019-06-30 09:33:10      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:-o   eof   用法详解   bsp   printf   %x   getc   signed   打印   

/* 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字节序问题

标签:-o   eof   用法详解   bsp   printf   %x   getc   signed   打印   

原文地址:https://www.cnblogs.com/zhanggaofeng/p/11108561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!