gpt4 book ai didi

c - 数组值如何存储在 Little Endian 与 Big Endian 架构中

转载 作者:行者123 更新时间:2023-12-04 09:42:36 27 4
gpt4 key购买 nike

我在询问如何判断数组中的一个元素何时完成,而另一个元素何时以字节序架构开始。
我有 2 个数组,其中 long 的大小是 8,大小为 char是 1long x[2] = {0x012345,0xFEDC};char c[12] = {'a','b','c','d','e','f','g','h','0','1','2','3'};我想知道如果我们考虑 x,这些值将如何存储在不同的 Endian 架构中。从内存地址 0x100 开始和 c从内存地址 0x200 开始.
我认为 Big Endian 地址是 {01,23,45,FE,DC}其中集合的第一个元素位于内存地址 0x100 ,接下来是0x101 ,第三个是0x102 ,等等,因为它存储基于 MSB 的值是第一个。但是,我不确定在表示内存中数组的值之间是否应该有一个指示器来表明它是一个不同的元素,例如 '\0' (空字符)。喜欢 {01, 23, 45,'\0', FE, DC}同样对于 Little Endian 架构,我相信它会将其存储为 {45,23,01,DC,FE} ,但我不确定是否应该有一些指示器来突出显示数组中的不同元素

最佳答案

在 little-endian 中,字节按从最不重要到最重要的顺序存储。 Big-endian 则相反。例如,short x=0x1234将存储为 0x34 , 0x12在小端。

如前所述,它只影响变量的字节顺序,而不影响每个字节内的位顺序。同样,C 数组元素的顺序不受字节顺序的影响。 array[1]总是开始一个 sizeof(*array)array[0] .

However, I'm not sure if there is supposed to an indicator between values that represent an array in memory to show that it's a different element, like a null char.



没有这样的指标。

{01,23,45,FE,DC}

{45,23,01,DC,FE}



它实际上是
{00,00,00,00,00,01,23,45, 00,00,00,00,00,00,FE,DC}

{45,23,01,00,00,00,00,00, DC,FE,00,00,00,00,00,00}
因为 long s 占用 8 个字节。

关于c - 数组值如何存储在 Little Endian 与 Big Endian 架构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26455843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com