如何将位序列添加到另一个序列的末尾?

时间:2018-11-20 16:41:05

标签: c bit-manipulation bit binary-data

我有一个使用memset创建的位序列,我想将函数的返回值添加到第一个序列中。

U16 *pointer_p = allocmem(); // 500 bytes
memset (&pointer_p, 0, size); // size = 497 bytes
U32 A = function(); //3 byte return value

如何在创建的数据末尾附加函数的返回值,下面的代码行是否有效?

pointer_p = (*pointer_p<<24)| A ;

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该更改

memset (&pointer_p, 0, size); // size = 497 bytes

memset (pointer_p, 0, size); // size = 497 bytes

然后,假设小尾数

((char *)pointer_p)[497] = A & 0xFFu;
((char *)pointer_p)[498] = (A >> 8) & 0xFFu;
((char *)pointer_p)[499] = (A >> 16) & 0xFFu;

对于大端,只需更改索引

((char *)pointer_p)[499] = A & 0xFFu;
((char *)pointer_p)[498] = (A >> 8) & 0xFFu;
((char *)pointer_p)[497] = (A >> 16) & 0xFFu;

目前尚不清楚它应如何与您的U16元素一起使用。