Little Endian和Big Endian中的内存表示字符串

har*_*oga -2 c memory cpu-architecture endianness

char S[6] = "18243";
Run Code Online (Sandbox Code Playgroud)

如何在大端系统和小端系统中表示以下字符串?

dbu*_*ush 6

该类型char包含一个字节.因此,该类型不涉及字节序.

在您的示例中,您有一个数组.数组元素一个接一个地存储在内存中.所以S[0]先出现S[1],等等:

  -----------------------------------
S | '1' | '8' | '2' | '4' | '3' | 0 |
  -----------------------------------
Run Code Online (Sandbox Code Playgroud)

  • @FiddlingBits虽然C规范允许`char`类型的不同位宽,但它仍然是任何目标平台上最小的可寻址单元,因此单个`char`没有字节序问题. (3认同)
  • 具有字可寻址存储器的DSP上的`char`可以是32位,通常称为4字节,不称为具有大字节.没有办法单独访问每个字的字节(除了使用DMA或MMIO加载/存储),因此除了外部硬件之外,`char`中的字节顺序仍然没有意义.(ping @FiddlingBits,这与你的问题有关.) (2认同)

Lun*_*din 5

Endianess仅适用于数字(大于一个字节).

无论endianess,字符串都以相同的方式表示:最低有效地址的第一个字母.