Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么字节顺序(endianess)不是标准C字符串的问题?_C_String_Endianness - Fatal编程技术网

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

为什么字节顺序(endianess)不是标准C字符串的问题?,c,string,endianness,C,String,Endianness,我的教授提到,字节顺序(endianess)不是标准C字符串的问题(字符数组): 例如:char[6]=“abcde” 但他没有解释原因 对这一点的任何解释都会有帮助只有当您有多字节数据(如整数和浮点数)时,端性才重要。标准C字符串由1字节字符组成,因此您无需担心尾数。Achar只占用一个字节,这就是顺序不重要的原因。例如,int有4个字节,这些字节可以按小端和大端排列 例如:0x00010204可以在内存中以两种方式排列: 04 02 01 00 or 00 01 02 04 char作为单

我的教授提到,
字节顺序(endianess)
不是
标准C字符串的问题(
字符数组
):

例如:
char[6]=“abcde”

但他没有解释原因


对这一点的任何解释都会有帮助

只有当您有多字节数据(如整数和浮点数)时,端性才重要。标准C字符串由1字节字符组成,因此您无需担心尾数。

A
char
只占用一个字节,这就是顺序不重要的原因。例如,
int
有4个字节,这些字节可以按小端和大端排列

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

04 02 01 00 or 00 01 02 04

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

如果您有一个4字节的值(例如:0x01234567),则内存存储的最小单位是1字节 它将在连续的位置按末端顺序排列和提取

Big Endian:01 23 45 67 小端甸:67 45 23 01

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


希望这有帮助

你认为在什么情况下会出现问题?我不知道他是什么意思。这就是我要求解释的原因。只有当单个元素大于1字节时,它才起作用。因为字符串是一个单字节元素数组,没有什么可考虑的。在<代码> java < /COD>中是否有同样的情况?@ AigelToLoJe:如我所记得的,java字符串使用16位字符,因此字节顺序可能是个问题——但是只有当你访问java字符串时,就像它是一个字节数组,而你通常不会这样做。Java
char
使用
2字节
,而不是
C
中的
1字节
。我不知道Java是否在内部将
String
存储为
char数组
。@user1988876大端表示应该是
00 01 02 04
,而不是
00 01 02 03 04
,在1字节内,在选择的编码问题中起作用。