memset char *带整数

问题描述 投票:1回答:2

我必须将char *中的4个字节记忆为整数。

例如,我有一个整数int i = 3276854 (0x00320036)和一个char header[54] = {0}。我必须在标题+ 2处写我,好像我将内存从标题[2]打印到标题[6]一样::>

0032 0036

我尝试过:

memset(&header[2], i, 1);

但是似乎只将最后一个字节放入标头中,我得到:

0036 0000

我也尝试过:

memset(&header[2], i, 4);

但是它用i的最后一个字节填充每个字节,我得到:

3636 3636

我也尝试过使用二进制掩码:

ft_memset(&header[2], (int)(54 + size) & 0xff000000, 1);
ft_memset(&header[3], (int)(54 + size) & 0x00ff0000, 1);
ft_memset(&header[4], (int)(54 + size) & 0x0000ff00, 1);
ft_memset(&header[5], (int)(54 + size) & 0x000000ff, 1);

我明白了:

3600 0000。

所以我不知道如何获得我的0032 0036或至少3600 3200(也许其中有些东西的尾数少而又大,因为我是在MacOS(大尾数)下运行的)。

我必须将char *中的4个字节设置为整数。例如,我有一个整数int i = 3276854(0x00320036)和一个char标头[54] = {0}。我必须在标题+ 2处写我,好像我在打印内存...

c memory endianness memset
2个回答
2
投票

memset用恒定的字节值填充内存。第二个参数(类型为int)将转换为unsigned char值。


0
投票

您可以使用memcpy,但这会使您的代码依赖于CPU的底层耐久性。我认为这不是您想要的。

© www.soinside.com 2019 - 2024. All rights reserved.