为什么字节排序(endianess)不是标准C字符串的问题?

时间:2014-01-15 23:33:46

标签: c string endianness

我的教授提到byte ordering (endianess)不是standard C StringChar arrays)的问题:

代表:char[6]="abcde";

但他没有解释原因?

对此的任何解释都会有所帮助

3 个答案:

答案 0 :(得分:2)

Endianess仅在您具有多字节数据(如整数和浮点数)时才有意义。标准C字符串由1个字节的字符组成,因此您无需担心字节顺序。

答案 1 :(得分:0)

char只占用一个字节,这就是为什么排序无关紧要的原因。例如,int有4个字节,这些字节可以用little-endian和big-endian排列。

例如:0x00010204可以在内存中以两种方式排列:

04 02 01 00 or 00 01 02 04
作为单个字节的

char将作为单个字节提取到CPU。而String只是一个char数组。

答案 2 :(得分:0)

如果有4字节的值(例如:0x01234567),则内存的最小存储单位为1字节。 它将在相邻位置按照Endianness的顺序进行排列和获取

Big Endian:01 23 45 67 小尾数:67 45 23 01

对于1字节的值,可以从一个内存位置本身获取它,因为那是最小的内存块,不需要字节排序。

希望这会有所帮助!