0

我有一个 void 指针,我想存储 long at 的二进制值。例如:

void * p;
long number;

p = malloc(16);
p = memset(p, 0, 16);
number = 15;

/* PRINTS FIRST 16 BYTES */
for(i = 0; i < memSize; i++)
     printf("%02x", ((unsigned char *) p) [i]);
printf("\n");

上面的代码将打印

00000000000000000000000000000000

我想将前 8 个字节设置为“数字”的值,例如:

000000000000000F0000000000000000

有没有一种简单的方法可以做到这一点?我想位移会起作用,但这可能会变得非常乏味。

4

2 回答 2

1

为什么不使用 memcpy?

 memcpy (p, &number, sizeof(number));

您是否关心字节的顺序(最重要与最不重要)?也许你应该阅读http://en.wikipedia.org/wiki/Endianness

于 2013-02-03T02:47:11.493 回答
0

尝试类似的东西

*((uint32_t*)p) = number;
于 2013-02-03T02:45:12.610 回答