Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Имеется поле, куда можно записать строку не длиннее 20 символов, а сама строка имеет длину 36 символов (это GUID). Может, существует алгоритм сжатия этого GUID хотя бы до 20 символов с последующим восстановлением к первоначальному виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 07:41 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
КеусИмеется поле, куда можно записать строку не длиннее 20 символов, а сама строка имеет длину 36 символов (это GUID). Может, существует алгоритм сжатия этого GUID хотя бы до 20 символов с последующим восстановлением к первоначальному виду? Если GUID типа 910023AC-56DC-48B5-BB86-55C1C9A21AC1 то его можно хранить в 16 байтах. 1) убираем "-" 2) преобразуем пару шестнадцетиричных символов "91" в байт; 3) преобразуем следующую пару ... -------------------------- вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 07:50 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. К сожилению приходится использовать 1С, а в ней типы могут быть только "число", "строка", "Дата". Поэтому GUID может быть только строкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 08:04 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Поэтому GUID может быть только строкой. Потому и задумался, как строку сжать и разжать без потерь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 08:11 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. К сожилению приходится использовать 1С, а в ней типы могут быть только "число", "строка", "Дата". Поэтому GUID может быть только строкой. Ну и что? а) 1С вполне справляется со строками длиннее 20 символов... б) Строка может содержать ЛЮБЫЕ значения байта как символ строки - выглядит канешна страшновато, но тебе ж на нее не любоваться? См. алгоритм выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 09:00 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
1 Кеус: вы таким образом место на диске пытаетесь сэкономить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 09:31 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
При большом желании можно получить и 20 печатных символов (из диапазона кодов 33-126). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 09:34 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Melkiades1 Кеус: вы таким образом место на диске пытаетесь сэкономить? Нет. Просто в 1С по номеру документа самый быстрый способ поиска. А номер документа не может превышать 20 символов. За месяц в базе создается и передается в другие организации около 200 000 документов. Раньше идентификатор конкретного документа состоял из 10 символов, теперь вот из 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 10:05 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
а) 1С вполне справляется со строками длиннее 20 символов... Номер документа не может. б) Строка может содержать ЛЮБЫЕ значения байта как символ строки - выглядит канешна страшновато, но тебе ж на нее не любоваться? См. алгоритм выше. А влезут ли они в 20 символов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 10:08 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
BarloneПри большом желании можно получить и 20 печатных символов (из диапазона кодов 33-126). Можно поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 10:16 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус а) 1С вполне справляется со строками длиннее 20 символов... Номер документа не может. б) Строка может содержать ЛЮБЫЕ значения байта как символ строки - выглядит канешна страшновато, но тебе ж на нее не любоваться? См. алгоритм выше. А влезут ли они в 20 символов? 1символ=1байту. Учи матчасть. ------------------------- исключение unicode-символы, дык в один unicode-символ можно аж два байта забабахать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 15:01 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Элементарнейшая экономия, это компоновка бит. Если диапозон используемых симоволов 0-9, т.е. 10 симовлов, то для их сохранения достаточно 4 бита (имеет 16 значений). Таким образом в байт можно положить 2 символа. Если диапозон симовлов больше 16-ти, то количество бит прийдется увеличить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 15:17 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус BarloneПри большом желании можно получить и 20 печатных символов (из диапазона кодов 33-126). Можно поподробнее? Ну изучай принцЫпы MIME-encoding... разные там методы есть. Всего надо закодировать 16*8=128 бит 126-33+1=94 различных символов Кодируем 128 битное число по основанию 94, используя символы как цифры разрядов. log2(94)= 6.555 бит/символ [128/6.(5)]=19.528 символа. ================= => можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 15:19 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
КеусНет. Просто в 1С по номеру документа самый быстрый способ поиска. А номер документа не может превышать 20 символов. За месяц в базе создается и передается в другие организации около 200 000 документов. Раньше идентификатор конкретного документа состоял из 10 символов, теперь вот из 36. 1)строкой длиной в 20 символов из больших букв латинского алфавита можно занумеровать ~20^20 документов , чего хватит на 20^20 / 20000 месяцев работы проги что много больше времени предпологаемого существования солнечной системы. Нужен ли тут именно GUID??? а может просто номер числовой?? зы. бедные юзери ищущие документ по гуид ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 17:16 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
aleks2 Спасибо за разъяснение. Хранить символы в байтах и битах это конечно хорошо, но платформа 1С этого не позволяет. Я могу использовать только "Строка" или "Число". Т.е. мне надо строку из 36 символов превратить в строку (число) максимум в 20 символов, а потом без потерь восстановить в первоначальный вид. Я просто не представляю, как записать байты в строковое или числовое поле. Если не трудно покажите, пожалуйста, как будут выглядеть в виде байтов несколько первых символов этой строки (910023AC-56DC-48B5-BB86-55C1C9A21AC1), а то без конкретного примера я не соображу, как это будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 10:38 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Палестинец 1)строкой длиной в 20 символов из больших букв латинского алфавита можно занумеровать ~20^20 документов , чего хватит на 20^20 / 20000 месяцев работы проги что много больше времени предпологаемого существования солнечной системы. Нужен ли тут именно GUID??? а может просто номер числовой?? Да нам и 10 символов хватало, но решили перейти на GUID в качестве идентификатора не мы, а Москва, при том по всей стране. Палестинецзы. бедные юзери ищущие документ по гуид У каждого документа есть серия и номер, который видят пользователи, но он может быть не уникальный. Идентификатор используется только для электронного обмена. Да и на уровне нашей организации ни кто не работает конкретно с каждым документом в ручную. Используют только общие данные, типа суммы выплаты вознаграждения по всем документам конкретного учреждения. У нас в области есть около 70 учреждений, где создаются каждый день куча документов, затем эти документы в электронном формате передаются нашей организации. Мы их заносим в базу и раз в месяц все эти документы выгружаем в один файл и отдаем в следующую организацию, а та в свою очередь еще в одну. Затем всё это возвращается назад по той же цепочке. При том один и тот же документ может месяцами ходить по этой цепочке. Каждый такой документ должен уникально идентифицироваться, раньше в качестве уникального номера использовался «код учреждения»+»порядковый номер документа» в этом учреждении. Затем в Москве решили перейти на единый формат обмена файлами и в качестве уникального идентификатора документа предписали использовать GUID (формат обмена действует для всей страны в рамках этого направления). От GUID отказаться нельзя, создать дополнительный реквизит для хранения GUID можно, но поиск по нему будет очень медленный и загрузка \ выгрузка данных затянется на сутки. Хранение символов в байтах я понимаю, но как записать их в 1С не представляю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 11:12 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. К сожилению приходится использовать 1С, а в ней типы могут быть только "число", "строка", "Дата". Поэтому GUID может быть только строкой.А разрядность "числа" у этой чудо-системы какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 12:52 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
DocAlА разрядность "числа" у этой чудо-системы какая? Длина числа может быть 20 знаков с точностью в 9. Можно записать число Пи: 3.141592653 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 17:18 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус От GUID отказаться нельзя, создать дополнительный реквизит для хранения GUID можно, но поиск по нему будет очень медленный и загрузка \ выгрузка данных затянется на сутки. Может, возможно нужный индекс в базе создать просто? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 20:05 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус aleks2 Спасибо за разъяснение. Хранить символы в байтах и битах это конечно хорошо, но платформа 1С этого не позволяет. Я могу использовать только "Строка" или "Число". Т.е. мне надо строку из 36 символов превратить в строку (число) максимум в 20 символов, а потом без потерь восстановить в первоначальный вид. Я просто не представляю, как записать байты в строковое или числовое поле. Если не трудно покажите, пожалуйста, как будут выглядеть в виде байтов несколько первых символов этой строки (910023AC-56DC-48B5-BB86-55C1C9A21AC1), а то без конкретного примера я не соображу, как это будет. Я без Help-а програмиировать в 1C не могу - не помню имен функций наизусть... на VBA - пожалуйста Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Извиняй, но кодировать число по основанию 94 - учись сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 20:21 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
aleks2 на VBA - пожалуйста Спасибо за пример. Понял Вашу мысль, вроде то, что мне может подойти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 11:28 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
DocAlМожет, возможно нужный индекс в базе создать просто? 1С не позволяет самому создавать индексы. Точнее, там есть несколько намертво записанных полей, по которым оптимизирован поиск и они присутствуют во всех документах. Можно создать свои поля (реквизиты) для поиска, но по ним поиск значительно медленней, чем по предопределенным в системе. 1С не удовлетворительно работает с задачей, для которой мы её используем. Как оказалось с большим объемом данных она не справляется. Если использовать дополнительные реквизиты для поиска, то мы не сможем уложиться в отведенные нам временные рамки. Вот и приходится через математику решать возникающие проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 11:45 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Зато MS SQL вполне может позволить создать-таки нужный индекс. Хотя у вас, возможно, файл-серверная версия.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 18:32 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. К сожилению приходится использовать 1С, а в ней типы могут быть только "число", "строка", "Дата". Поэтому GUID может быть только строкой. Разбей на две части и храни в двух строках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 23:02 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34052536&tid=1346459]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
72ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 440ms |

| 0 / 0 |
