gpt4 book ai didi

c++ - C memcpy 以小字节序复制字节

转载 作者:行者123 更新时间:2023-11-30 18:19:35 29 4
gpt4 key购买 nike

我编写了一个例程,将字节附加到 byte_array 中,如下所示

unsigned long speed = 0xfeb;
char byteArray[8];
bzero(byteArray,8); //fills every of the 8 bytes with zero
memcpy(byteArray,&speed ,4); //copies 4 bytes from speed to byteArray

操作后,我期望 byteArray 的值为 0xfeb 但事实证明 byteArray 的值为 0xebf

发生什么事了? memcpy 将结果强制为小尾数是否正常?我应该怎么做才能在不改变字节顺序的情况下获得结果?

最佳答案

memcpy仅复制字节,不关心字节顺序:

Copies count bytes from the object pointed to by src to the object pointed to by dest. Both objects are reinterpreted as arrays of unsigned char.

如果您使用的是小端机器,它将首先复制 LSB。在大端机器上,它将首先复制 MSB,您将得到预期的 0x0f 0xeb

<小时/>

不相关,但您不应使用硬编码值,而应使用 sizeof,例如

unsigned long speed = 0xfeb;
char byteArray[sizeof(speed)];
bzero(byteArray, sizeof(byteArray));
memcpy(byteArray, &speed , sizeof(speed));

关于c++ - C memcpy 以小字节序复制字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48619160/

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