c - 什么时候担心字节顺序?

标签 c endianness

我看过无数关于字节顺序及其含义的引用资料。我对此没有任何问题...... 然而,我的编码项目是一个简单的游戏,可以在标准的“游戏玩家”硬件上运行在 linux 和 windows 上。 在这种情况下我需要担心字节序吗?我什么时候需要担心它? 我的代码是简单的 C 和 SDL+GL,唯一复杂的数据是基本媒体文件 (png+wav+xm),游戏数据主要是字符串、整数 bool 值(用于标志等)和静态大小的数组。到目前为止,没有用户遇到问题,所以我想知道是否有必要添加检查(稍后会完成,但 IMO 有更紧急的问题)。

最佳答案

需要担心字节顺序的时候:

  • 您正在机器或进程之间发送二进制数据(使用网络或文件)。如果机器可能有不同的字节顺序或使用的协议(protocol)指定了特定的字节顺序(它应该指定),您将需要处理字节顺序。
  • 您有通过不同类型的指针访问内存的代码(假设您通过 char* 访问 unsigned int 变量)。

如果您执行这些操作,无论您是否知道,您都在处理字节顺序 - 可能是您通过假设它是一种或另一种方式来处理它,只要您的代码可以正常工作不必处理不同的平台。

以类似的方式,您通常需要在相同的情况下出于类似的原因处理对齐问题。再一次,您可能会通过什么都不做并让一切正常工作来处理它,因为您不必跨越平台边界(如果这确实成为一项要求,这可能会回来咬你)。

关于c - 什么时候担心字节顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2213441/

相关文章:

c - 返回平均值、最大值、最小值的 Void 函数,并以数组和输入数量作为参数

c - 在静态分析中寻找循环迭代器

C# BinaryWriter - 和字节顺序

c - 将 char 指针类型转换为整数指针

c++ - C++ 模板如何专用于所有 32 位 POD 类型?

c# - 将 Int32 转换为 24 位有符号整数

c++ - 当主线程无限循环运行时,服务器尚未接收到用 QTcpSocket::write 写入的字节?

没有头文件的C程序

c - 用另一个结构初始化一个结构

c - 从 unsigned char 读取 N 位时字节顺序是否重要