基于字节序的条件编译

Conditionally-compiling based on endianness

我正在从字节数组中读取 Words 并且需要使我的部分代码能够识别字节序。 GHC 是否公开了任何我可以用来使代码以处理器字节顺序为条件的东西(比如 MachDeps.h)?如果不能,我可以从 HOST_ARCH(从 ghcplatform.h 可在 .cabal 文件中使用 arch() 条件访问)可靠地推断字节顺序吗?还是其他想法?

您是否正在寻找这样的东西: https://hackage.haskell.org/package/cpu-0.1.0/docs/System-Endian.html

如果您不want/cannot使用这些包,查看上面的源代码,您可以了解如何使用(几乎)任何低级编程语言(如 C)在任何平台上检查字节顺序或类似的。填充堆栈的一部分(对于具有 4 位的机器:例如 1000),然后读回所述堆栈的 LSB 或 MSB。 Endianness 将决定它的存储方式(您将读回 1000 或 0001)。