Elias Delta Coding
来源:互联网 发布:网络举报工作总结 编辑:程序博客网 时间:2024/06/09 19:47
EliasDelta Coding
适用范围:
EliasDeltaCoding和EliasGamma Coding一样,也是一种对正整数进行编码的统一编码,由PeterElias发明。适用于预先无法获知最大编码整数的情况,而且小整数出现频率高,大整数出现频率低。
编码原理:
对任何正整数NUM,对INT(Log2(NUM))+1进行Gamma编码,后缀上NUM二进制串除去最高位的子串。如5的编码为011,01。
编码示例:
NUM
EliasDelta Code
Implied probability
1 = 20 + 0
1
1/2
2 = 21 + 0
0100
1/16
3 = 21 + 1
0101
1/16
4 = 22 + 0
01100
1/32
5 = 22 + 1
01101
1/32
6 = 22 + 2
01110
1/32
7 = 22 + 3
01111
1/32
8 = 23 + 0
00100000
1/256
9 = 23 + 1
00100001
1/256
编码、解码算法:
/****************************************************Encode_EliasDelta:Encoding algorithm of EliasDelta Coding.*****************************************************/int Encode_EliasDelta(int *pSourceData,char *pEncodedData,int nSourceDataLen,int &nEncodedDataLen){int k=-1; for(int i=0;i<nSourceDataLen;i++) { int num = pSourceData[i]; int numPow= int(log10(num)/log10(2));int num1 = numPow+1;int num1Pow= int(log10(num1)/log10(2));for (int j=0; j <num1Pow ; j++) pEncodedData[++k]=0;pEncodedData[++k]=1; for (j=num1Pow-1; j >= 0; j--) { if (num1 & 1 << j) pEncodedData[++k]=1; else pEncodedData[++k]=0;} for (j=numPow-1; j >= 0; j--) { if (num & 1 << j) pEncodedData[++k]=1; else pEncodedData[++k]=0; }nEncodedDataLen=k+1;}return 1;}/****************************************************Decode_EliasDelta:Decoding algorithm of EliasDelta Coding.*****************************************************/int Decode_EliasDelta(int *pDecodedData,char *pEncodedData,int &nDecodedDataLen,int nEncodedDataLen){int i=0,j=0;while (1) {//Decode num1 int num1Pow = 0; while (!pEncodedData[i++]) num1Pow++; if(num1Pow >=48) break; int num1 = 0; for (int h=num1Pow-1; h >= 0; h--)if (pEncodedData[i++]) num1 |= 1 << h; num1 |= 1 << num1Pow; //Decode numint numPow = 0;numPow = num1-1;int num =0;for( h=numPow-1;h>=0;h--){if(pEncodedData[i++])num |= 1 <<h;}num |= 1 << numPow; pDecodedData[j++]=num; } nDecodedDataLen=j;return 1;}
- Elias Delta Coding
- 压缩算法之Elias Gamma Coding & Elias Delta Coding
- Elias Gamma Coding
- Uva-11632-Elias gamma coding
- delta coding入门
- Elias Gamma Coding对正整数、整数(采用bijection)的编码解码解析
- Elias编码
- Delta
- Coding
- Coding
- coding
- coding
- coding
- coding
- Coding
- coding
- Coding
- Coding
- Objective-C++(1)
- FacesContext类 分享
- MFC(继续对话框,孙鑫C++第八讲笔记整理)
- su与sudo
- Java编程中“为了性能”尽量要做到的一些地方
- Elias Delta Coding
- 开博致辞
- dropdownlist绑定增加“全部”选项
- Iterator中hasNext(), next()
- Ununtu下在Matlab中读写OpenEXR格式的图片
- Java当中的线程(二)
- Winform中DataGridView绑定List<T>数据源时,点击DataGridView列头不能自动排序解决方法
- 自定义默认生成的导航栏 标题 颜色 返回按钮
- 报告称七月份国产手机大胜,市场份额82.1%