У меня есть специальная библиотека сжатия для некоторых конфиденциальных данных. Часть того, что кодировщик должен хранить для декодера, — это длинный разреженный битовый массив (где однобиты встречаются гораздо реже, чем нулевые).
В настоящее время я использую арифметическое кодирование, которое работает, но я подумал, что могу добиться большего. 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
Алгоритм сжатия raNS. Можете ли вы выявить ошибки в этой реализации? ⇐ C#
Место общения программистов C#
1768180215
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);
Подробнее здесь: [url]https://stackoverflow.com/questions/79865760/rans-compression-algorithm-can-you-identify-the-bugs-in-this-implementation[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия