0

我有一个位列表,我想将其解压缩到阶段,阶段 #1 将其解压缩到结构 A,并且根据我在 A.next 字段中收到的值,我想将“REST”解压缩到另一个击中,可以是 B、C 或 D。

我的问题是如何通知下一个解包从哪里开始解包。代码:

unpack(packing.low, l, A);
if (A.next==B) {unpack(packing.low, l, B, LAST_UNPACK_SIZE)};
if (A.next==C) {unpack(packing.low, l, C, LAST_UNPACK_SIZE)};
if (A.next==D) {unpack(packing.low, l, D, LAST_UNPACK_SIZE)};
4

1 回答 1

1

一般来说,为了自定义解包,建议扩展结构体的do_unpack()方法。从外部包装将保持简单,而在内部您可以封装逻辑。但不确定它是否符合您的流程,因为您可能无法从 A 变量访问 B、C、D 变量。

对于这种特定情况,您可能会尝试一些技巧,例如将位缓冲区列表传递到第一阶段,然后从缓冲区中解压缩其余部分:

unpack(packing.low, l, A, buffer);
case A.next {
    B: { unpack(packing.low, buffer, B) };
    C: { unpack(packing.low, buffer, C) };
    D: { unpack(packing.low, buffer, D) };
    default: { error(...) };
};
于 2014-07-20T17:02:45.473 回答