如何在指针处存储long的二进制值?

时间:2013-02-03 02:40:14

标签: c void-pointers systems-programming

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

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个字节设置为“number”的值,例如:

000000000000000F0000000000000000

有一种简单的方法吗?我认为位移会起作用,但这可能变得相当繁琐。

2 个答案:

答案 0 :(得分:1)

为什么不使用memcpy?

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

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

答案 1 :(得分:0)

尝试类似

的内容
*((uint32_t*)p) = number;