0

long のバイナリ値を格納したい void ポインターがあります。例えば:

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

これを行う簡単な方法はありますか?ビットシフトはうまくいくと思いますが、それはかなり退屈になる可能性があります.

4

2 に答える 2

1

なぜ memcpy を使わないのですか?

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

バイトの順序を気にしますか (最上位 vs 最下位)? おそらくhttp://en.wikipedia.org/wiki/Endiannessを読む必要があります

于 2013-02-03T02:47:11.493 に答える
0

次のようなものを試してください

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