我有一个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
有一种简单的方法吗?我认为位移会起作用,但这可能变得相当繁琐。
答案 0 :(得分:1)
为什么不使用memcpy?
memcpy (p, &number, sizeof(number));
你是否关心字节的顺序(最重要的是最不重要的第一个)?也许你应该阅读http://en.wikipedia.org/wiki/Endianness
答案 1 :(得分:0)
尝试类似
的内容*((uint32_t*)p) = number;