gifts2017

Перевод десятичного числа в шестнадцатеричное

Опубликовал Владислав Ентц (vladen) в раздел Программирование - Практика программирования

Алгоритм перевода числа из десятичной системы в шестнадцатеричную.

Бала задача переводить цвет элементов формы в шаблон HTML. Цвет RGB из формы мог достать только по компонентам в виде числа, а в разметке умею задавать цвет только в формате #XXYYZZ где XX, YY, ZZ задаються компоненты цвета в шестнадцитеричной системе. Вот и пришлось думать о переводе.

 

В результате такие вот функции:


Функция ВозвестиВСтепень(Число, Степень)
    Результат = 1;
    для й =1 по Степень Цикл
       
        Результат = Результат * Число;
       
    КонецЦикла;
   
    Возврат Результат;
КонецФункции

Функция ПеревестиЧислоВшестнадцатеричное(Число) Экспорт
    ЧислаРазряда = Новый Соответствие;
    ВремЧисло = Число;
    максСтепень = 0;
    Пока ВремЧисло >= 16 Цикл
        ЧислоРазряда = ВремЧисло;       
        Степень = 0;
        Пока Не Цел(ЧислоРазряда) < 16 Цикл
           
            ЧислоРазряда = ЧислоРазряда / 16;
            Степень = Степень + 1;
            максСтепень = макс(максСтепень, Степень);
        КонецЦикла;
        ЧислаРазряда.Вставить(Степень,Цел(ЧислоРазряда));
        ВремЧисло = ВремЧисло - ВозвестиВСтепень(16,Степень)*Цел(ЧислоРазряда);
    КонецЦикла;
   
    ЧислаРазряда.Вставить(0,Цел(ВремЧисло));
   
    ЧислВ16 = "";
    Для й = 0 по максСтепень Цикл
        Если ЧислаРазряда.Получить(й) = Неопределено Тогда
           
            ЧислаРазряда.Вставить(й, 0);
           
        КонецЕсли;
        ЧислоРазряда = ЧислаРазряда.Получить(й);
        Если ЧислоРазряда = 10 Тогда
            ЧислВ16 = "A" + ЧислВ16;
        ИначеЕсли ЧислоРазряда = 11 Тогда
            ЧислВ16 = "B" + ЧислВ16;
        ИначеЕсли ЧислоРазряда = 12 Тогда
            ЧислВ16 = "C" + ЧислВ16;
        ИначеЕсли ЧислоРазряда = 13 Тогда
            ЧислВ16 = "D" + ЧислВ16;
        ИначеЕсли ЧислоРазряда = 14 Тогда
            ЧислВ16 = "E" + ЧислВ16;
        ИначеЕсли ЧислоРазряда = 15 Тогда
            ЧислВ16 = "F" + ЧислВ16;
        Иначе
            ЧислВ16 = Строка(ЧислоРазряда) + ЧислВ16;
        КонецЕсли;
    КонецЦикла;
   
    Возврат ЧислВ16;
КонецФункции

 

И для примера обработочна во вложении (платформа 8.2)

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
DEC_HEX.epf
.epf 6,45Kb
21.02.12
12
.epf 6,45Kb 12 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Armando Armando (Armando) 07.04.11 15:40
2. Ийон Тихий (cool.vlad4) 07.04.11 15:48
:D я помню мы такие вещи в школе на qbasic-е делали...а еще раньше по математике, когда разные системы счисления изучали...грустно...
3. Александр Рытов (Арчибальд) 07.04.11 16:11
//На входе – Целое положительное число
//на выходе – строка 16-ричных "цифр"
Функция ДесятьШестнадцать(пЧисло)
лЦифры = "0123456789ABCDEF";
Рез = пЧисло;
лСтр = "";
Пока Рез > 0 Цикл
Ост = Рез % 16 + 1;
лСтр = Сред(лЦифры, Ост, 1) + лСтр;
Рез = Цел(Рез / 16);
КонецЦикла;
Возврат лСтр;
КонецФункции

Да... Уж...
so-quest; ll13; adhocprog; Tedman; It-developer; Mi4man; begemot; marsohod; gaglo; +9 Ответить
4. Armando Armando (Armando) 07.04.11 17:20
Функция ВозвестиВСтепень(Число, Степень)
Результат = 1;
для й =1 по Степень Цикл

Результат = Результат * Число;

КонецЦикла;

Возврат Результат;
КонецФункции

Pow (Pow)
Синтаксис:
Pow(<Основание>, <Показатель>)
Параметры:
<Основание> (обязательный)
Тип: Число. Основание операции возведения в степень.
<Показатель> (обязательный)
Тип: Число. Показатель степени.
Возвращаемое значение:
Тип: Число. Результат возведения в степень.
Описание:
Возводит число <X> в степень <Y>.
5. Serj (Serj1C) 08.04.11 07:13
> Цвет RGB из формы мог достать только по компонентам в виде числа, а в разметке умею задавать цвет только в формате #XXYYZZ
в CSS цвет можно записать в форме "color: rgb(255; 0; 0)"
6. Алексей Константинов (alexk-is) 08.04.11 07:47
Программный код в тексте публикации можно раскрасить.

Кстати. Разукрашка умеет переводить цвета используемые в 1С для HTML оптимизируя длину строки цвета. Виды обрабатываемых цветов: ВидЦвета.Абсолютный и ВидЦвета.WebЦвет. Получится так:
RGB(255,0,0) = "red"
RGB(0,0,255) = "blue"
RGB(255,0,255) = "#FF00FF"
7. Владислав Ентц (vladen) 08.04.11 16:55
эм... да... кон ни кто не оценил, зато получилась интересная тема :) мне интересно, думаю кому-то может быть полезна. Всем спасибо.
8. Armando Armando (Armando) 09.04.11 13:23
ни кто не оценил

Радуйся, что минусов не влипили. Хотя стоило бы.
Публикация на самом деле 100% бесполезная.
10. Доржи Балбаров (Angeros) 24.01.13 13:07
мда слабовато. както пришлось делать перевод из 96ти ричной системы в 36 ричную и наоборот...
11. Епрст (Ёпрст) 24.01.13 13:19
12. Александр Анисков (vandalsvq) 07.02.13 13:25
Ценности в статье никакой. В приведенном коде тоже. Поставил минус. Ничего личного.
13. DrZombi DrZombi (DrZombi) 26.09.14 16:10
Автор, твоё велосипед с квадратными колесами не работает!!!

Смотреть тут и копировать от туда http://kb.mista.ru/article.php?id=78
soroka; Jekich; +2 Ответить
14. DrZombi DrZombi (DrZombi) 26.09.14 16:10
(12) Согласен!!! Код не рабочий :)
15. Kostya Zhurov (It-developer) 25.02.15 11:49
перевод в систему некрасиво сделан, но идея цветов нормальная
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа