> For the complete documentation index, see [llms.txt](https://awesome-tips.gitbook.io/ios/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://awesome-tips.gitbook.io/ios/qi-ta/content-12.md).

# 13. 简单了解 iOS 大小端以及转换

**作者**: [高老师很忙](https://weibo.com/517082456)

iOS 设备的处理器是基于 ARM 架构的，默认是采用小端模式（低字节放低位，图1）读取数据的，而网络和蓝牙传输数据通常是用的大端模式（低字节放高位，图2）。例如：想传输 ABCD （图3）

![5](https://3602781484-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LUYeWAm5IWBtrAOZ2Bb%2F-LUYjcutxneQXizIQfB1%2F-LUYjnK5duJmu4YjchEF%2F1.jpg?generation=1545714224344675\&alt=media)

![6](https://3602781484-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LUYeWAm5IWBtrAOZ2Bb%2F-LUYjcutxneQXizIQfB1%2F-LUYjnK7flXEALMl0QQd%2F2.jpg?generation=1545714224914222\&alt=media)

![7](https://3602781484-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LUYeWAm5IWBtrAOZ2Bb%2F-LUYjcutxneQXizIQfB1%2F-LUYjnK9pte-4grbRfna%2F3.jpg?generation=1545714224782410\&alt=media)

按大端模式给到 iOS 客户端是 `DCBA`，那么 iOS 默认读取出来的也是 DCBA，而非 ABCD。所以就需要进行大小端的转换，要不然没办法得到想要的数据。苹果为我们提供了丰富的 API，而不需要让我们对逐个字节进行转换。可以详见[官方文档](https://developer.apple.com/documentation/corefoundation/byte_order_utilities?language=objc)。

通常 iOS 比较常用的就是`CFSwapInt16BigToHost`、`CFSwapInt32BigToHost`，把大端转换为本机支持的模式，如果本机是大端了则不做任何改变。
