C#でランレングスの解凍プログラムを作成したのですが、あっているかチェックして欲しいのですが
よろしいでしょうか。
in
data :圧縮された値(バイト)
maxv :圧縮に用いたレベルの最大値
nbit : 8
src_len :総バイト数
out
data2[]
static int Ranrengusu_extract(byte[] data, int src_len, int maxv, int nbits, int[] data2)
{
int lngu = 0;
int lastv = 0;
int pos = 0;
int i = 0;
int lngv = 99999, lngn = 99999;
lngu = (1 << nbits) - 1 - maxv; lngv = 0; for (i = 0; i < src_len; i++) { if (data[i] <= maxv) { while (lngv-- > 0) { data2[pos++] = lastv; } lastv = data2[pos++] = data[i]; lngn = 1; lngv = 0; } else { lngv = lngv + (lngn * (data[i] - (maxv + 1))); lngn *= lngu; } } while (lngv-- > 0) { data2[pos++] = lastv; } return pos ; }
あなたの回答
tips
プレビュー