0

我正在编写一个代码来根据用户输入(一次 EIGHT_BITS 或一次 FOUR_BITS)解码字节数组。我实际上已经设法根据 EIGHT_BITS 解码字节数组。现在我想用 FOUR_BITS 对它们进行解码。

INT DecodeElem(UINT8 *decodeBuf, UINT8 elemlen, UINT8 *tempBuf, UINT8 elemlength){

  if (elemlength== EIGHT_BITS){
    *tempBuf = getByte(decodeBuf + decodeByteCount);
     decodeOffset = 0;
     decodeByteCount++;
  }
}

即,如果elemlength= FOUR_BITS,我需要解码字节数组中特定字节的前四位。有人可以让我知道如何在不修改我上面写的 EIGHT_BITS 的情况下做同样的事情吗?

我基本上需要的是另一个带有 if (elemlength == FOUR_BITS) 的 if 语句

注意: tempBuf 是 CHAR * 类型,我不能更改类型。decodeByteCount 和 decodeOffset 是全局变量;*decodeBuf 是已经编码的需要解码的字节数组。elemlen 供将来使用,我会照顾它。

这是我的 getByte 函数:

UINT8 getByte(UINT8 *byteBuf)
{
  return ((UINT8)*byteBuf);
}
4

1 回答 1

1

我不确定 decodeOffset 和 decodeByteCount 是做什么的......
应该是这样的(假设每个字节有 2 个 4 位值。如果假设错误,请从代码中删除“/2”):

if (elemlength== FOUR_BITS){  
    *tempBuf = getByte(decodeBuf + decodeByteCount / 2);
    if(decodeByteCount % 2)
        *tempBuff = (*tempBuff & 0xF0) >> 4;
    else
        *tempBuff = (*tempBuff & 0Xf);
    // ???decodeOffset = 0;
    // ???decodeByteCount++;
}
于 2013-03-12T10:56:34.417 回答