Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在指针上存储long的二进制值?_C_Void Pointers_Systems Programming - Fatal编程技术网

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

C 如何在指针上存储long的二进制值?,c,void-pointers,systems-programming,C,Void Pointers,Systems Programming,我有一个空指针,我想存储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"); 000000000000000F000000

我有一个空指针,我想存储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");
000000000000000F0000000000000000
我想将前8个字节设置为“number”的值,例如:

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");
000000000000000F0000000000000000
有没有一个简单的方法可以做到这一点?我想位转换会起作用,但那可能会变得相当乏味。

试试类似的方法

*((uint32_t*)p) = number;
为什么不使用memcpy呢

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

您是否关心字节的顺序(最重要还是最不重要)?也许您应该阅读

由于我将是唯一引用此数据的人,因此实际上并不需要特定的字节顺序。我试着使用memcpy,但它没有按预期工作。对于我的测试,数字=16;但是在打印字节时,它返回100000000000000000000000第一个字节是0x10,以16为基数10。您运行的机器的有效字节数第一位(小尾端)。啊,好的。我希望数据包含前导零。。。感谢您的帮助。是否可以使用memcpy包含前导零?我突然想到,我不知道这种格式的数量级。