我有一个使用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 ;
谢谢!
答案 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
元素一起使用。