【问题标题】:How to add a bit sequence to the end of another sequence?如何将一个位序列添加到另一个序列的末尾?
【发布时间】:2018-11-20 16:41:05
【问题描述】:

我有一个使用 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 ;

谢谢!

【问题讨论】:

  • 数据应该插入大端还是小端?你的处理器是大端还是小端?

标签: c bit-manipulation bit binary-data


【解决方案1】:

你应该改变

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 元素一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    相关资源
    最近更新 更多