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

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С:Предприятие 8 Бесплатно (free)

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

14.05.2025    5399    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    46289    dimanich70    83    

164

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

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

1 стартмани

18.03.2024    6837    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

12.02.2024    57341    atdonya    31    

68

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

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

30.11.2023    8603    ke.92@mail.ru    17    

68

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

28.08.2023    22757    YA_418728146    8    

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

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