解码字节数组中的一个字节的FOUR_BITS(在C中)

时间:2013-03-12 10:45:13

标签: c

我正在编写一个代码来根据用户输入解码字节数组(一次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);
}

1 个答案:

答案 0 :(得分: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++;
}