zoukankan      html  css  js  c++  java
  • 大小端问题

    大小端是计算机存储信息的不同方式。
    大段:内存低地址位存储数据高位,内存高地址位存储数据低位。
    小端:内存低地址位存储数据低位,内存高地址位存储数据高位。
    举例,32位系统上 int value = 0x12345678
    存储在0x0000-0x0003的内存地址上
    大端:
    0x0000 :  0x12
    0x0001 :0x34
    0x0002 :0x56
    0x0003 :0x78
    小端:
    0x0000 :  0x78
    0x0001 :0x56
    0x0002 :0x34
    0x0003 :0x12

    用代码检验系统大端/小端

    //返回值为1为小端,返回值为0为大端
    bool CheckEnd() {
        int value = 1;
        return (*((char*)(&value)) == 1);
    }

    另外,网络字节序也是大端的

    小端系统在发送数据和接收数据时需要使用以下htons/htonl 和 ntohs/ntohl 函数转换字节序

    //htons
    u16_t htons(u16_t value) {
        return (((value & 0xff00)>>8) |    
                    ((value & 0x00ff) << 8));
    }
    
    //htonl
    u32_t htonl(u32_t value) {
        return (((value & 0xff000000) >> 24) |    
                    ((value & 0x00ff0000) >> 8) |    
                    ((value & 0x0000ff00) << 8) |    
                    ((value & 0x000000ff) <<24));
    }
    
    //ntohs
    u16_t ntohs(u16_t value) {
        return htons(value);
    }
    
    //ntohl
    u32_t ntohl(u16_t value) {
        return htonl(value);
    }
  • 相关阅读:
    redis存储session配制方法
    thanks使用注意事项;
    mongodb sort limit和skip用法
    mongoose的用法(注:连接数据库)
    mongoose查询特定时间段文档的方法
    webworker的使用案例
    js 传参数
    redis.config翻译
    Oracle keep详解
    自学之笔记总结
  • 原文地址:https://www.cnblogs.com/noanswer/p/3672562.html
Copyright © 2011-2022 走看看