首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

7BIT 壓縮編碼長度計算方法(C 語言實現)

     編輯:關於C語言

ASCII 碼最高位為 0,7BIT 壓縮編碼利用這一空位存儲數據,可將 8 字節 ASCII 壓縮為 7 字節。本文提供兩種場景下的長度計算 C 實現。

1. 已知編碼後字符串,不解碼求原始 ASCII 長度

if (nSrc % 7 == 0) {
    if (*(pSrc + nSrc - 1) >> 1)
        nLength = (nSrc / 7) * 8;
    else
        nLength = (nSrc / 7) * 8 - 1;
} else {
    if (*(pSrc + nSrc - 1) >> (8 - nSrc % 7))
        nLength = (nSrc / 7) * 8 + nSrc % 7 + 1;
    else
        nLength = (nSrc / 7) * 8 + nSrc % 7;
}

原理:編碼後長度若是 7 的倍數,原始長度可能是 8 的倍數或 8n-1。通過檢查最後一字節最高位是否有殘留數據來判斷。非 7 倍數時同理,移位位數不同。

2. 已知原始 ASCII 字符串,不編碼求 7BIT 編碼後長度

if (nSrc % 8 == 0) {
    nLength = (nSrc / 8) * 7;
} else {
    if (*(pSrc + nSrc - 1) >> (nSrc % 8 - 1))
        nLength = (nSrc / 8) * 7 + ((nSrc % 8) * 7) / 8 + 1;
    else
        nLength = (nSrc / 8) * 7 + ((nSrc % 8) * 7) / 8;
}

應用場景:短信發送時,若內容全為 ASCII,採用 7BIT 壓縮可將 160 字符壓縮為 140 字節傳輸。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved