Переводим число из десятичной в любую систему счисления

11.05.10

Разработка - Универсальные функции

Иногда надо перевести число в двоичную или шестнадцатеричную систему счисления - нет ничего проще.
Кроме этого, данной функцией можно воспользоваться для компактного представления большого числа (например результат вычисления хэш функции) в виде строкового кода, когда код документа (справочника) тип строка.

Например число 6869973762479115207 (19 разрядов) в 156-ричной системе счисления будет представлен строкой "KвULq%Лzq" (9 символов)

 

// Функия переводит число переданное в параметре
// Значение в строку (либо число) в системе счисления X
// X определяется линой шаблона, представление знаков разрядов
// значение шаблона, где сивол шаблона[k] - есть представление
// Например если шаблок "01", то перевод будет осуществлен в двоичную
 // систему счисления, если "01234567", то в восьмиричную
// если "0123456789ABCDEF", то в шестнадцатиричную
// если "ЛИ", то в двоичную, где 0 представлен буквой Л, а 1 буквой И
// вариант шаблона:
// "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwzyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя!@#$%^&*()_-=+{}[]\|/,.:;'""><"
// представит Значение в сто пятидесятишести ричной системе счисления,
// где соответствующий символ шаблона означает соответствующую цифру разряда
Функция Из_Число_В_XСчисл(Знач Значение, Шаблон)
    Результат="";
    Основание = СтрДлина(Шаблон);
    Пока Значение>0 цикл
        Остат = Значение%Основание;
        Результат1=Сред(Шаблон,Остат+1,1);
        Значение = (Значение-Остат)/Основание;
        Результат = Результат1 + Результат;
    КонецЦикла;
    Возврат Результат;
КонецФункции


См. также

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    20251    dimanich70    81    

145

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4100    3    John_d    11    

57

Универсальные функции Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    18218    atdonya    24    

57

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    5511    ke.92@mail.ru    16    

65

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    14779    YA_418728146    7    

166

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    3596    57    progmaster    8    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    18500    171    sapervodichka    112    

135
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. arithmometr 152 12.05.10 01:11 Сейчас в теме
Если с помощью этой функции закодировать строки, а потом усуществлять поиск по этим строкам, то получим глюк. При стандартном поиске 1С не различает регисров букв.
По этому, я в подобной функции использую только большие литеры латиницы и маленькие кириллицы + некоторые непонятные символы (не набираемые с клавиатуры) воспринимаемые 1С нормально.
У меня насобиралось 146 символов.
И все таки (+)
2. kosilov 276 12.05.10 02:39 Сейчас в теме
Я как-то не подумал, что не различает маленькие и большие.
В таком случае надои спользовать только одного регистра.
Я использую просто цифробуквенный код (цифры и большие латинские буквы).
Такой код хоть читаем человеком.

4. kosilov 276 12.05.10 14:43 Сейчас в теме
(3) Да, практически идентичная реализация.
Мне только кажется, что передавать патерн в качестве параметра базы системы счисления немного гибче.
Хотя, как кому нравиться.
5. Yashazz 4791 13.05.10 14:08 Сейчас в теме
"Двуричная" - это сильно.
6. kosilov 276 14.05.10 00:56 Сейчас в теме
(5) Ну когда будут распространены квантовые компутера будем переводить в кванты. ;)
7. palamars 22.09.11 12:04 Сейчас в теме
Было бы неплохо привести функцию и обратного перевода
8. lazy 320 20.10.11 16:31 Сейчас в теме
За идею плюсик.
Взял на себя смелость написать функцию обратную представленной автором.
http://infostart.ru/public/95428/
9. Anthon 231 15.09.24 12:38 Сейчас в теме
Руки бы пообрубать за такое.
Ты написал вариант шаблона
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwz­yzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщ­ьыъэюя
в котором две буквы z. Хорошо, что в последний момент обнаружили косяк. Ты специально такую бомбу заложил?
Оставьте свое сообщение