美文网首页
iOS 字节序

iOS 字节序

作者: Sweet丶 | 来源:发表于2020-09-14 13:47 被阅读0次

计算机存储数据时,数据是由地址连续的多个字节来完成存储的,如:int是4个字节,数据int i_num = 0x12345678; 由4个字节连续的地址空间来存储,每个字节存2位。

存储数据有大端、小端两种模式:
比如int i_num的地址假设:0x100,0x101,0x102,0x103。

大端模式:由低地址开始存放的高位的字节数据. 即0x100中存放的是0x12, 0x101中存放0x34,0x102中存放0x56, 0x103中存放0x78.
小端模式:由低地址开始存放的低位字节的数据。即0x100中存放的是0x78, 0x101中存放0x56,0x102中存放0x34, 0x103中存放0x12.

iOS系统是小端模式的,网络字节序是大端模式的,测试代码如下:

/**
 * 大端:高位字节在低地址,低位字节在低地址。
 * 小端:低位字节在低地址,高位字节在高地址。更符合计算机
 */
void testByteOrder(){
   printf("系统字节序:\n");
    int i_num = 0x12345678; // 运行结果是小端模式
    printf("[0]:0x%x\n", *((char *)&i_num + 0));
    printf("[1]:0x%x\n", *((char *)&i_num + 1));
    printf("[2]:0x%x\n", *((char *)&i_num + 2));
    printf("[3]:0x%x\n", *((char *)&i_num + 3));
    
    printf("\n网络字节序:\n");// 运行结果是大端模式
     i_num = htonl(i_num); // htonl 将i_num转换成网络字节序
    printf("[0]:0x%x\n", *((char *)&i_num + 0));
    printf("[1]:0x%x\n", *((char *)&i_num + 1));
     printf("[2]:0x%x\n", *((char *)&i_num + 2));
    printf("[3]:0x%x\n", *((char *)&i_num + 3));
}

运行结果:

系统字节序:
[0]:0x78
[1]:0x56
[2]:0x34
[3]:0x12

网络字节序:
[0]:0x12
[1]:0x34
[2]:0x56
[3]:0x78

相关文章

  • iOS 字节序

    计算机存储数据时,数据是由地址连续的多个字节来完成存储的,如:int是4个字节,数据int i_num = 0x1...

  • Linux的socket API基本操作

    1.socket地址API 主机字节序和网络字节序 字节序分为大端字节序和小端字节序 大端字节序 = 一个整数的高...

  • C语言字节序转换API

    主机字节序转网络字节序 网络字节序转主机字节序 将字符串IP地址转换为网络字节序的整型数据 将网络字节序数据转换为...

  • 内存序、字面量、动态规划

    内存字节序 确认内存字节序 /* 确定你的电脑是大端字节序还是小端字节序 */include int check...

  • socket编程基础

    字节序 字节序分为大端字节序和小端字节序大端字节序: 是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内...

  • 深入理解Emoji(二) —— 字节序和BOM

    上篇主要了解了字符集和字符集编码的相关知识,其中有提到字节序的问题,这篇我们便深入探讨下这方面的知识。 字节序 字...

  • Linux高性能服务器入门

    第五章 Linux网络编程基础API 主机字节序和网络字节序 <5.1.1>Q:设定主机字节序和网络字节序是为了解...

  • 一文搞懂序列化与反序列化

    一、是什么 序列化:就是将对象转化成字节序列的过程。 反序列化:就是讲字节序列转化成对象的过程。 对象序列化成的字...

  • Linux高性能服务器开发

    公众号:畅游码海 更多高质量原创文章都在里面~ 主机字节序和网络字节序: 在32位机器上,累加器一次能装载4个字...

  • Linux socket编程:地址及转换

    1. 网络字节序与主机字节序 1.1 主机字节序() CPU的字节顺序类型, 小端,little endian; ...

网友评论

      本文标题:iOS 字节序

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