Алгоритм сжатия raNS. Можете ли вы выявить ошибки в этой реализации?C#

Место общения программистов C#
Ответить
Anonymous
 Алгоритм сжатия raNS. Можете ли вы выявить ошибки в этой реализации?

Сообщение Anonymous »

У меня есть специальная библиотека сжатия для некоторых конфиденциальных данных. Часть того, что кодировщик должен хранить для декодера, — это длинный разреженный битовый массив (где однобиты встречаются гораздо реже, чем нулевые).
В настоящее время я использую арифметическое кодирование, которое работает, но я подумал, что могу добиться большего. AI предложил РАНС Дуда с реализацией ниже. Однако это не работает. Статья выходит за рамки моего уровня математического понимания. Может ли кто-нибудь указать на ошибки?
//Common declarations:

static class Rans
{
public const uint L = 1u = Rans.L * model.total)
{
output.Add((byte)(x & 0xFF));
x >>= 8;
}

x = (x / freq) * model.total + (x % freq) + cum;
}

for (int i = 0; i < 4; i++)
{
output.Add((byte)(x & 0xFF));
x >>= 8;
}

return output.ToArray();
}
}

//Decoder:

static class RansDecoder
{
public static string Decode(byte[] data, int bitCount, uint count0, uint count1)
{
var model = new BitModel(count0, count1);

int idx = data.Length - 1;

uint x = 0;
while (idx >= 0 && x < Rans.L)
{
x = (x > Rans.SCALE_BITS) + (v - cum);

while (x < Rans.L && idx >= 0)
{
x = (x c == '0');
uint count1 = (uint)bits.Length - count0;
var e = RansEncoder.Encode(bits, count0, count1);
var d = RansDecoder.Decode(e, bits.Length, count0, count1);
Console.WriteLine(bits);
Console.WriteLine(d);


Подробнее здесь: https://stackoverflow.com/questions/798 ... ementation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»