我正在使用基于 arm 的 arch 将数据发送到基于 x86 的 arch在发送或接收数据之前,我是否必须编写代码来更改字节序?

问题描述

我正在使用在 x86 架构上运行的 winsock 用 C++ 编写服务器程序。我想知道在基于 arm 的架构上运行的客户端是否可以成功地与服务器共享数据而不会遇到问题,因为这两种架构使用不同的字节顺序。在接收或发送数据之前,我是否必须编写一些代码来转换字节序?

解决方法

只需对要在它们之间发送的数据的字节序做出决定,并在双方保持一致。

最常见的是您会使用网络字节顺序,它是大端的,并使用 htonlntohl 之类的函数来转换主机系统使用的任何内容. (如果宿主系统已经是 big-endian,这些函数什么也不做,通常会被优化掉。)