Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Сжатые числа (clipper) / 4 сообщений из 4, страница 1 из 1
05.07.2006, 12:21
    #33832404
Vladimir_Ot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатые числа (clipper)
Помогите плс разобраться.
Есть PRG-модуль позволяющий сжимать числа. Что под этим понимается я не знаю, возможно сжатие в двоично-десятичные числа, используемые в ассемблере, но судя по беглому осмотру кода, что-то большее.
С клиппером никогда не имел дело, поэтому используемые в коде функции не всегда понятны, а разбираться времени нет. : (

Мне нужно знать что делает этот алгоритм, т.е. каким образом он пакует, чтоб написать аналогичное на другом языке.
Ниже кусочек кода файла, может кому покажется знакомым.

Код: plaintext
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.
STATIC aTabl1       := {  29 ,   7 ,  15 ,  14 ,  23  }  //   3  - 5_1 O5_1
STATIC aTabl2       := {   5 ,  21 ,  12 ,  30 ,  26  }  //  16  - 5_2 O5_2
STATIC aTabl3       := {   8 ,  24 ,  17 ,  13  }      //  10  - 4_1 O4_1
STATIC aTabl4       := {   4 ,  11 ,   9 ,  22  }      //  25  - 4_2 O4_2
STATIC aTabl5       := {  20 ,   1 ,  18 ,  27  }      //  19  - 4_3 O4_3
STATIC aTabl6       := {   2 ,   6 ,  28  }          //  19  - 3_1 O3_1
STATIC aTabl7       := {  23 ,  21 ,  13 ,   9 ,   6  }
STATIC aTabl8       := {   7 ,  12 ,  11 ,  22 ,  28  }
STATIC aTabl9       := {  29 ,  30 ,  24 ,   1  }
STATIC aTabl10      := {  15 ,  14 ,  20 ,   2  }
STATIC aTabl11      := {   5 ,  26 ,   8 ,  17  }
STATIC aTabl12      := {   4 ,  18 ,  27  }
STATIC aTabl01      := {   1 ,  2 ,  4 ,   5 ,  7  }
STATIC aTabl02      := {   3 ,  6 ,  8 ,  10  }

// упаковка полей C  5 
FUNCTION PackC5( Data )
  MEMVAR pnKey
  LOCAL  nRandVal, nKey :=  0 , nSavData
  IF pnKey =  3487595928158456 
     IF Data <  0  .OR. Data >  16777215  .OR. Data =  2105376 
        Data :=  0 
     ENDIF
     nKey := RANDOM()% 65535 + 1 
     nSavData := Data
     ChBits( @nKey, @Data,  3  )
     IF nKey =  8224  .OR. nKey =  0 
        nKey :=  0 
        Data := nSavData
     ELSE
        nRandVal := INT(RAND(nKey*( 34 *nKey+ 845 )+ 196 )* 1000000 )
        Data := NUMXOR( Data, nRandVal )
     ENDIF
  ENDIF
  RETURN SUBSTR(L2BIN(Data), 1 , 3 )+I2BIN(nKey)
...
Рейтинг: 0 / 0
05.07.2006, 12:34
    #33832451
StasL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатые числа (clipper)
А что тебя конкретно интересует? Я думаю, алгоритм работы программы можно понять и не зная языка. IF в любом языке IF
...
Рейтинг: 0 / 0
05.07.2006, 12:47
    #33832512
Vladimir_Ot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатые числа (clipper)
Можно, но нужно какое-то время.
Я надеюсь, что по процитированному кусочку кто-нибудь узнает элементы известного алгоритма. А мне нкжно описание этого алгоритма.
...
Рейтинг: 0 / 0
05.07.2006, 20:02
    #33834047
savosin_sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатые числа (clipper)
1. похоже на какое-то шифрование, можно порыться по этой теме в литературе
2. клиппер-форум: clipper.fastbb.ru
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Сжатые числа (clipper) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]