美文网首页IOS开发知识点
iOS简单判断大小端字节序

iOS简单判断大小端字节序

作者: conowen | 来源:发表于2017-08-09 10:38 被阅读776次

大小端定义

大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中(网络上一般都是采用大端模式)
小端模式(Little-endian),是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中
例如
int a =1;
为0x 00 00 00 01,一个有32bit,4个Byte,内存地址是连续的,如在起始地址为0x400001的内存地址中,
在大端模式下
第一位为0x00(地址为0x400001)
第二位为0x00(地址为0x400002)
第三位为0x00(地址为0x400003)
第四位为0x01(地址为0x400004),高地址保存低字节。
在小端模式下就相反。

判断大小端字节序代码

int checkCPU()
{
    union w
    {
        int a;//在ios中,4 Byte
        char b;//在ios中,1 Byte
    } c;
    c.a = 1;
    return(c.b ==1);//如果c.b == 1,表示第一位是0x01,那就是小端,如果返回0,就是大端
}

union简述

在C语言中,关键字union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:
union StateMachine
{
char character;
int number;
char *str;
double exp;
};

一个union 只配置一个足够大的空间以来容纳最大长度的数据成员,以上例而言,最大长度是double 型态,所以StateMachine 的空间大小就是double 数据类型的大小。

相关文章

  • iOS简单判断大小端字节序

    大小端定义 大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的...

  • 腾讯视频C++后台

    攒人品【之前春招的】 一个半小时的时间笔试题目: 1)图解TCP,手绘 2)代码实现判断大小端字节序 3)实现简单...

  • 大小端字节序

    内存逻辑上是一个大的字节数组,当存储大于一个字节的数据时就有字节序的问题。 大小端经常弄混,这里有种简单的记忆方法...

  • 大小端字节序

    字节序,或字节顺序("Endian"、"endianness" 或 "byte-order"),描述了计算机如何组...

  • JS判断移动端、PC端、iOS端

    判断PC 判断Android端、iOS端

  • iOS阅读列表

    iOS 简单了解iOS大小端以及转换 微信iOS收款到账语音提醒开发总结 WWDC 2018:高性能 Auto L...

  • 字节序

    大小端及网络字节序[https://blog.csdn.net/z_ryan/article/details/79...

  • 9-malloc练习-大小端

    malloc 练习 : 大小端判断 :

  • C: 判断大小端

    大端与小端 大端与小端指的是多字节的数值在内存中的存储形式,数值的起始存储在内存的高序地址则为大端,反之为小端: ...

  • 系统大小端判断

网友评论

    本文标题:iOS简单判断大小端字节序

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