大小端

作者: 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

相关文章

  • 大小端

    大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数...

  • 大小端

    我还是弄不清,记不住到底哪个大,哪个小,所以我暂时先不管了 bool IsLittleEndian() { i...

  • 大小端

    大小端是指大于一个字节的变量在内存中的存储顺序,在内存中,通常来说,是以字节为单位存储数据的,以c++为例,一个c...

  • IT(大小端)

    计算机内存由低地址向高地址分配 小端(低尾端):低序字节放在低地址:数:1234 -> 内存:4321 大端(高尾...

  • 大小端

    Java与平台无关默认是大端,网络上传输数据普遍采用大端C语言默认是小端数据在计算机中存储的大小端两种,以十进制数...

  • 大小端

    小端 特征:数据的低字节保存在内存低地址,高字节保存在内存高地址。注意:数据类型 char 和 unsigned ...

  • 大小端

    void test() { char a,b,c,d; int x=0x30313233; cout << *((...

  • 大小端

    大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。小端模式,是指数据的高字节保存...

  • 大端小端问题

    为什么有大小端问题 大端 小端 解决大小端方法: 或者:

  • 大小端模式

    大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数...

网友评论

      本文标题:大小端

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