Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Заданы целые числа x, y, z. Вычислите значение выражения https://www.cyberforum.ru/ csharp-beginners/ thread1140203.html
Помогите реализовать на форме. Заданы целые числа x,y,z.Вычислите значение выражения. m=(\frac{x-6min(z,y)}{3max(x,7y,5-z)})+181
C# Запись в docx с OpenXML
При редактировании document.xml и упаковки в zip архив с переименованием расширения в docx документ word больше не открывается, пишет, что файл поврежден. Как правильно записать в документ с...
C# Добавление даты в название файла Доброго времени суток, уважаемые форумчане. Нужно переместить файл из одной директории в другую и добавить к имени файла настоящую дату. Делаю так: File.Move(SavePath, PathTemp + "/" + "Old" + "/"... https://www.cyberforum.ru/ csharp-beginners/ thread1140142.html C# Написать полезную утилиту, программу для работы с интернет, социальными сетями https://www.cyberforum.ru/ csharp-beginners/ thread1140133.html
мое задание: написать полезную утилиту, программу для работы с интернет, социальными сетями... посоветуйте полезную и не очень сложную программу типа видеоплеера, скачивания музыки с ВК, другие...
Считать текст из файла и вывести на экран только строки, не содержащие двузначных чисел C#
Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел. Например ест текст в abc.txt, в котором ест текст: "школа дом номер24 быстро...
C# Выборка из файла, размер которого около 100 Мб https://www.cyberforum.ru/ csharp-beginners/ thread1140115.html
Добрый день! У меня есть на чтение большой файл, около 100 МБ, мне нужно сделать по нему выборку. Проблема в том, что цикл byte b = 0; while(b != 255) { b =...
C# Удаление элемента из односвязного списка Доброе утро. Никак не могу реализовать удаление элемента из списка. Получается только после найденного элемента. public void Delete(PageRam page) { PageRam temp =... https://www.cyberforum.ru/ csharp-beginners/ thread1140092.html Прошу дописать пакер XML из исходника анпакера C#
Имеется исходник программы для распаковки XML файлов из игры, но функции запаковки обратно не предусмотрено. Прошу дописать, если не сложно, сам разбираю С++ и в C# совсем не рублю. Вот исходник:
C# Автоматическое распараллеливание задачи Здравствуйте. При попытке создания библиотеки, что занимается распараллеливанием циклов For(на подобии Parallel.For в Net 4+), столкнулся с проблемой. А именно производительность. Допустим есть... https://www.cyberforum.ru/ csharp-beginners/ thread1140062.html C# Из одной строки копировать содержание скобок комментария в новую строку Ребята, всем доброй ночи, прошу вашей помощи в след. заданиях):help: 1) Используя индексацию строк, выполнить: - из одной строки копировать содержание скобок комментария в новую строку... https://www.cyberforum.ru/ csharp-beginners/ thread1140038.html
C# Считывание из файл и сохранение в контейнер. Программа зацикливается
Подскажите пожалуйста почему цикл в TextList бесконечный и как решить эту проблему ? using System; using System.Collections.Generic; using System.IO; namespace ConsoleApplication8 { class...
C# Чтение из файла в List<> Подскажите, пожалуйста, как сделать, чтобы и данные прочитать в следующем порядке. Есть файл, в который данные из определенной структуры записываются в следующем порядке 6 True RealTime 7 True... https://www.cyberforum.ru/ csharp-beginners/ thread1139918.html
vladp727
0

Алгоритм сжатия LZRW1 (С++ -> C#) - C# - Ответ 6005792

06.04.2014, 13:00. Показов 1226. Ответов 0
Метки (Все метки)

Доброе время суток.
Есть алгоритм сжатия LZRW1(Необходим именно он) написанный на C++. За долгое время поисков, мне не удалось найти реализацию этого алгоритма на C#.

Собственно сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#define FLAG_BYTES    1     /* Number of bytes used by copy flag. */
#define FLAG_COMPRESS 0     /* Signals that compression occurred. */
#define FLAG_COPY     1     /* Signals that a copyover occurred.  */
 
inline void fast_copy(const char *p_src, char *p_dst, int len)
{
  memcpy(p_dst, p_src, len);
}
 
/******************************************************************************/
 
void lzrw1_compress(const char *p_src_first, int src_len,char *p_dst_first, int *p_dst_len)
/* Input  : Specify input block using p_src_first and src_len.          */
/* Input  : Point p_dst_first to the start of the output zone (OZ).     */
/* Input  : Point p_dst_len to a ULONG to receive the output length.    */
/* Input  : Input block and output zone must not overlap.               */
/* Output : Length of output block written to *p_dst_len.               */
/* Output : Output block in Mem[p_dst_first..p_dst_first+*p_dst_len-1]. */
/* Output : May write in OZ=Mem[p_dst_first..p_dst_first+src_len+256-1].*/
/* Output : Upon completion guaranteed *p_dst_len<=src_len+FLAG_BYTES.  */
#define PS *p++!=*s++  /* Body of inner unrolled matching loop.         */
#define ITEMMAX 16     /* Maximum number of bytes in an expanded item.  */
{const char *p_src=p_src_first;
 char *p_dst=p_dst_first;
 const char *p_src_post=p_src_first+src_len;
 char *p_dst_post=p_dst_first+src_len;
 const char *p_src_max1=p_src_post-ITEMMAX,*p_src_max16=p_src_post-16*ITEMMAX;
 const char *hash[4096];
 char *p_control; short int control=0,control_bits=0;
 *p_dst=FLAG_COMPRESS; p_dst+=FLAG_BYTES; p_control=p_dst; p_dst+=2;
 while (TRUE)
   {const char *p,*s; short int unroll=16,len,index; int offset;
    if (p_dst>p_dst_post) goto overrun;
    if (p_src>p_src_max16)
      {unroll=1;
       if (p_src>p_src_max1)
         {if (p_src==p_src_post) break; goto literal;}}
    begin_unrolled_loop:
       index=((40543*((((p_src[0]<<4)^p_src[1])<<4)^p_src[2]))>>4) & 0xFFF;
       p=hash[index];
       hash[index]=s=p_src;
       offset=s-p;
       if (offset>4095 || p<p_src_first || offset==0 || PS || PS || PS)
         {literal: *p_dst++=*p_src++; control>>=1; control_bits++;}
       else
         {int dummyVal = PS || PS || PS || PS || PS || PS || PS ||
          PS || PS || PS || PS || PS || PS || s++; len=s-p_src-1;
          dummyVal = dummyVal;
          *p_dst++=(char)(((offset&0xF00)>>4)+(len-1)); *p_dst++=(char)(offset&0xFF);
          p_src+=len; control=(control>>1)|0x8000; control_bits++;}
    /*end_unrolled_loop:*/ if (--unroll) goto begin_unrolled_loop;
    if (control_bits==16)
      {*p_control=control&0xFF; *(p_control+1)=control>>8;
       p_control=p_dst; p_dst+=2; control=control_bits=0;}
   }
 control>>=16-control_bits;
 *p_control++=control&0xFF; *p_control++=control>>8;
 if (p_control==p_dst) p_dst-=2;
 *p_dst_len=(p_dst-p_dst_first);
 return;
 overrun: fast_copy(p_src_first,p_dst_first+FLAG_BYTES,src_len);
          *p_dst_first=FLAG_COPY; *p_dst_len=src_len+FLAG_BYTES;
}
 
/******************************************************************************/
 
void lzrw1_decompress(const char *p_src_first, int src_len, char *p_dst_first, int *p_dst_len)
/* Input  : Specify input block using p_src_first and src_len.          */
/* Input  : Point p_dst_first to the start of the output zone.          */
/* Input  : Point p_dst_len to a ULONG to receive the output length.    */
/* Input  : Input block and output zone must not overlap. User knows    */
/* Input  : upperbound on output block length from earlier compression. */
/* Input  : In any case, maximum expansion possible is eight times.     */
/* Output : Length of output block written to *p_dst_len.               */
/* Output : Output block in Mem[p_dst_first..p_dst_first+*p_dst_len-1]. */
/* Output : Writes only  in Mem[p_dst_first..p_dst_first+*p_dst_len-1]. */
{
    short int controlbits = 0, control = 0;
 const char *p_src=p_src_first+FLAG_BYTES;
 char *p_dst=p_dst_first;
 const char *p_src_post=p_src_first+src_len;
 if (*p_src_first==FLAG_COPY)
   {fast_copy(p_src_first+FLAG_BYTES,p_dst_first,src_len-FLAG_BYTES);
    *p_dst_len=src_len-FLAG_BYTES; return;}
 while (p_src!=p_src_post)
   {if (controlbits==0)
      {control=*p_src++; control|=(*p_src++)<<8; controlbits=16;}
    if (control&1)
      {short int offset,len; char *p;
       offset=(*p_src&0xF0)<<4; len=1+(*p_src++&0xF);
       offset+=*p_src++&0xFF; p=p_dst-offset;
       while (len--) *p_dst++=*p++;}
    else
       *p_dst++=*p_src++;
    control>>=1; controlbits--;
   }
 *p_dst_len=p_dst-p_dst_first;
}
Помогите пожалуйста перевести это на C#, буду очень благодарен!

Вернуться к обсуждению:
Алгоритм сжатия LZRW1 (С++ -> C#) C#
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2014, 13:00
Готовые ответы и решения:

Алгоритм сжатия Хаффмана
помогите пожалуйста с данным алгоритмом, моя программа работает, вот только не сжимет, а наоборот,...

Алгоритм сжатия Хаффмана
Может кто сталкивался с таким алгоритмом? Может у кого нибудь есть исходник, или подробный...

Алгоритм сжатия RLE
Здравствуйте, очень нужна помощь в задании! Просто очень срочно, пожалуйста! Написать программу...

Алгоритм сжатия Jpeg
У кого ни будь есть готовый Алгоритм сжатия Jpeg? Хотя бы самый простой без задания качества итд....

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2014, 13:00

Алгоритм сжатия данных
Помогите пожалуйста, необходимо создать программное приложение сжатия данных алгоритмом LZ77

Алгоритм сжатия PPM - нужен пример
Доброго времени суток.. Ребята, у кого есть реализованный алгоритм сжатия pрm на С++/С# поделитесь...

Алгоритм сжатия и распаковки изображений по стандарту Jpeg-Ls
Мне нужно написать алгоритм сжатия и распаковки изображений по стандарту, описанному в Jpeg-Ls....

Алгоритм сжатия LZ
Если у кого есть, поделитесь кодом, пожалуйста:-/

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru