我的教授提到byte ordering (endianess)
不是standard C String
(Char arrays
)的问题:
代表:char[6]="abcde";
但他没有解释原因?
对此的任何解释都会有所帮助
答案 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字节的值,可以从一个内存位置本身获取它,因为那是最小的内存块,不需要字节排序。
希望这会有所帮助!