mirror of
https://github.com/fumiama/base16384.git
synced 2026-06-05 18:20:33 +08:00
33 lines
783 B
C
33 lines
783 B
C
#include "base14.h"
|
|
|
|
int encode_len(int dlen) {
|
|
int outlen = dlen / 7 * 8;
|
|
int offset = dlen % 7;
|
|
switch(offset) { // 算上偏移标志字符占用的2字节
|
|
case 0: break;
|
|
case 1: outlen += 4; break;
|
|
case 2:
|
|
case 3: outlen += 6; break;
|
|
case 4:
|
|
case 5: outlen += 8; break;
|
|
case 6: outlen += 10; break;
|
|
default: break;
|
|
}
|
|
return outlen + 8; // 冗余的8B用于可能的结尾的覆盖
|
|
}
|
|
|
|
int decode_len(int dlen, int offset) {
|
|
int outlen = dlen;
|
|
switch(offset) { // 算上偏移标志字符占用的2字节
|
|
case 0: break;
|
|
case 1: outlen -= 4; break;
|
|
case 2:
|
|
case 3: outlen -= 6; break;
|
|
case 4:
|
|
case 5: outlen -= 8; break;
|
|
case 6: outlen -= 10; break;
|
|
default: break;
|
|
}
|
|
return outlen / 8 * 7 + offset + 1; // 多出1字节用于循环覆盖
|
|
}
|