大小端

作者: wenfh2020 | 来源:发表于2020-02-10 20:51 被阅读0次

    小端

    特征:数据的低字节保存在内存低地址,高字节保存在内存高地址。
    注意:数据类型 char 和 unsigned char 类型是没有大小端之分的。


    网络通信中,终端与服务器的通信数据需要保证大小端一致,终端和服务端约定一种方式,进行通信即可。

    例如约定小端模式。那么终端在数据传输前,要将数据类型进行检测处理。

    int little = 1;
    if (*(char*)(&little) == 0) {
        printf("big endian\n");
    } else {
        printf("little endian\n");
    }
    

    测试

    #include <stdio.h>
    
    unsigned char is_little_endian() {
        static int little = 1;
        return (*(char*)(&little) == 1);
    }
    
    void swap(void* data, int n) {
        if (is_little_endian()) return;
    
        int i;
        unsigned char *p, temp;
    
        p = (unsigned char*)data;
        for (i = 0; i < n / 2; i++) {
            temp = p[i];
            p[i] = p[n - 1 - i];
            p[n - 1 - i] = temp;
        }
    }
    
    int main(int argc, char** argv) {
        int a = 0x12345678;
        swap(&a, sizeof(a));
        printf("a: %x\n", a);
        return 0;
    }
    

    更精彩内容,请关注我的博客:https://wenfh2020.com

    相关文章

      网友评论

          本文标题:大小端

          本文链接:https://www.haomeiwen.com/subject/unyzxhtx.html