Имя: Пароль:
1C
1С v8
Внутренне устройство ХранилищеЗначений
0 Adept
 
15.01.15
20:30
Пытаюсь разобраться во внутреннем устройстве хранилища значений, Серелизую хранилище в хмл, если с обычным хранилищем все просто достаточно, то со сжатием проблемы. У кого нить есть предположения какой алгоритм там используется?
1 zulu_mix
 
15.01.15
20:32
deflate
2 Adept
 
15.01.15
20:37
(1) Всмысле zlib? Не похоже ...
3 zulu_mix
 
15.01.15
20:38
да все похоже. он там в чистом виде.
4 ДенисЧ
 
15.01.15
20:39
zip там используется
5 zulu_mix
 
15.01.15
20:39
не веришь - попробуй сжать файл одинцом и он прекрасно распакуется
6 Adept
 
15.01.15
20:44
(5) Да не я верю, я на это и расчитовал, но что то модуль zlib питоновский не берет серелизованную строку
7 zulu_mix
 
15.01.15
20:45
(6) наверняка одинцы свой хидер пихают. найди его, отрежь и все прекрасно распакуется
8 Armando
 
15.01.15
22:00
(0) "...то со сжатием проблемы"
какие?
9 Adept
 
15.01.15
22:07
(8) Строка zlib не распаковывается, запакованная на python  ни какой частью не похожа на запакованную 1с
10 Jaap Vduul
 
15.01.15
22:12
11 zulu_mix
 
15.01.15
22:15
собственно то что я и говорил, подтвердил ава
"..Подсмотрел у себя в исходниках Tool_1CD.
Если хранилище начинается с 01 01 - хранилище не сжато. Если с 02 01 - хранилище сжато. в таком случае следом идут 16 байт некой сигнатуры (зачем это - не знаю)
0x53,0x4b,0x6f,0xf4,0x88,0x8d,0xc1,0x4e,0xa0,0xd5,0xeb,0xb6,0xbd,0xa0,0xa7,0x0d
Возможно, это не сигнатура, и что-то она означает, однако, других значений я не встречал.
А вот уже следом за этой сигнатурой идет собственно сжатый deflate-ом поток. Т.е. нужно взять все байты, начиная с 19-го и до конца файла и распаковать."
12 Adept
 
15.01.15
22:20
(11) Если не запаковано то с 3 по 10 счетчик размера, пошел проверять  ...
13 Adept
 
15.01.15
23:24
аа голову сломал уже, народ, если есть на чем протестировать. В хранилище отправляем строку с символом 20 (одним)

в закодированном виде
AgFTS2/0iI3BTqDV67a9oKcN42GAgPe791crBSvpKIko1QIA
в раскодированном b64 в 16 битном формате
b'0201534b6ff4888dc14ea0d5ebb6bda0a70de3618080f7bbf7572b052be9288928d50200'
заархивирована таже строки средствами питона
b'789c13010000150015'

в раскодированной строке, нет ни одной подстроки которую можно было бы раскодировать
14 Adept
 
15.01.15
23:25
+(13) в раскодированной строке, нет ни одной подстроки которую можно было бы разархивировать
15 H A D G E H O G s
 
15.01.15
23:48
(13) И что тебя смущает?
16 H A D G E H O G s
 
15.01.15
23:49
У тебя 2 разных набора данных сжаты. Возможно даже разными размерами словаря (хотя на небольших данных скорее всего это роли не играет).
17 МихаилМ
 
16.01.15
00:03
18 Asmody
 
16.01.15
00:04
(13) с каким "символом 20"? В 8ке же строки внутре в юникоде, не?
Закон Брукера: Даже маленькая практика стоит большой теории.