我正在編寫一個代碼來解碼基於用戶輸入(一次EIGHT_BITS或一次FOUR_BITS)的字節數組。我實際上設法解碼基於EIGHT_BITS的字節數組。現在我想用FOUR_BITS解碼它們。解碼字節數組中的一個字節的FOUR_BITS(C)
INT DecodeElem(UINT8 *decodeBuf, UINT8 elemlen, UINT8 *tempBuf, UINT8 elemlength){
if (elemlength== EIGHT_BITS){
*tempBuf = getByte(decodeBuf + decodeByteCount);
decodeOffset = 0;
decodeByteCount++;
}
}
即如果elemlength = FOUR_BITS,我需要字節陣列中的特定字節的前4位進行解碼。有人能讓我知道如何在不修改我上面寫的EIGHT_BITS的情況下做同樣的事情嗎?
我基本上需要的是另一種if語句,如果(elemlength == FOUR_BITS)
注:tempBuf是CHAR *類型,我不能改變的類型。 decodeByteCount和decodeOffset是全局變量; * decodeBuf是需要解碼的已編碼字節數組。 elemlen供將來使用,我會照顧它。
這是我的了getByte功能:
UINT8 getByte(UINT8 *byteBuf)
{
return ((UINT8)*byteBuf);
}
您需要屏蔽掉高4位,然後將每個輸入字節的低4位,並做一些比特移位... – Nick 2013-03-12 10:47:34
可以你請給我一個相同的僞代碼?我很困惑如何在* tempBuf上做位移和遮罩。我知道如何掩飾和轉移,但不知道如何在* tempBuf上執行此操作。 – 2013-03-12 10:50:34
每個輸入字節是否只包含一個輸出字節?即餘下的4個字節沒有被使用?還是數據包裝? – Nick 2013-03-12 10:54:10