Каталог решений - Перевод чисел в шестнадцатеричную систему на примере генератора случайных цветов

Перевод чисел в шестнадцатеричную систему на примере генератора случайных цветов

Перевод чисел в шестнадцатеричную систему на примере генератора случайных цветов

В наличии

Демонстрация новой возможности платформы (8.3.13.1513) на практическом примере.

Категория:

Описание

Понадобилось мне генерить рандомные цвета для вывода полигонов на карту одного отечественного сервиса. Подставлять мне их надо было в текст JS-скрипта и они должны были быть в HEX-формате (RRGGBB). Памятуя о колхозных процедурах преобразования в шестнадцатеричную систему в 1С я понадеялся, что в новых релизах платформы что-нибудь могло появиться на эту тему и затаив дыхание написал "HEХ" в поиске по справке…

ПолучитьHexСтрокуИзБуфераДвоичныхДанных(<Буфер>)
Параметры:
<Буфер> (обязательный)
Тип: БуферДвоичныхДанных.
Буфер двоичных данных.

Возвращаемое значение:
Тип: Строка.

Описание:
Преобразует буфер двоичных данных в строку формата Base 16 (Hex).
 

Возник вопрос, что за  буфер такой и можно ли в него запихнуть нужное мне значение:

БуферДвоичныхДанных

Описание:
Коллекция байтов фиксированного размера с возможностью произвольного доступа и изменения по месту.
 

Вроде подходит, надо попробовать:

Генератор = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
ЦветЧислом = Генератор.СлучайноеЧисло(0, 16777215);
Буфер = Новый БуферДвоичныхДанных(4, ПорядокБайтов.LittleEndian);
Буфер.ЗаписатьЦелое32(0, ЦветЧислом);
Цвет = Лев(ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер), 6);

Инициализируем ГСЧ максимально уникальным значением. Пробовал сначала просто ТекущаяДата(), но в одну секунду процедура успевала выполниться много раз и получался один и тот же цвет, поэтому перешёл на миллисекунды.

Генерим число в диапазоне от 0x0 до 0xFFFFFF.

Создаём буфер. Нам нужно три байта, но поскольку нет метода записи в буфер чисел из трёх байтов 🙂 и есть метод записи в буфер числа из 4х байтов, поставил 4 байта.

Записываем в буфер наше случайное число и получаем значение буфера в виде HEX-строки. Последний байт нам не нужен, поэтому берём только первые 3.

Вот такой относительно простой способ преобразования в HEX у нас появился. Советую почитать про эту группу методов, они ещё много чего полезного умеют (например, Base64-кодирование двоичных данных: ПолучитьBase64ДвоичныеДанныеИзДвоичныхДанных).

has been added to your cart:
Оформление заказа