gpt4 book ai didi

c - 如何从 C 中给定的 char 指针读取 4 个字节的数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:50 25 4
gpt4 key购买 nike


场景是,我想从给定的 char 类型的指针读取 4 个字节的数据。
例如:考虑以下 -

int a=0;
char* c; // This will have some address

我想做的是读取从 c 开始的 4 个字节(即地址)并将它们分配到变量 a 中,这是一个整数。

我的解决方案:

a = *(int*)c;  // Assembly is LDR    r1, [r6,#0x00]

我的问题:
上述解决方案在某些架构上运行良好,但在某些架构上失败。具体来说,就我而言,它在 Arm CortexM0 上失败了。

如果有人对我的解决方案有任何便携、高效(最小组装)的替代品,请分享,这对我有很大帮助,我提前感谢你;)

请询问是否需要更多信息。

最佳答案

问题可能是因为对齐。某些 CPU 架构无法在未对齐的地址上读取或写入非字节值。

解决方案是改为进行未对齐的字节访问,这可以通过 memcpy 轻松完成。 :

memcpy(&a, c, sizeof a);

关于c - 如何从 C 中给定的 char 指针读取 4 个字节的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41978340/

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