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