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

Учебные задачи

Преобразуем известные строки без префиксов и видим, что один и тот же текст 10 означает разные числа в разных системах счисления.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Все значения учебные и создаются в памяти; документы, регистры и рабочие данные не изменяются.

  2. Выполняйте на сервере учебной базы. Представление десятичного разделителя в сообщениях зависит от локали.

  3. Это текстовые числовые поля, а не байтовый порядок двоичного пакета. Символы префикса 0x/0b здесь не используются.


Сообщить(ЧислоИзДвоичнойСтроки("11111111"));
Сообщить(ЧислоИзШестнадцатеричнойСтроки("FF"));
Сообщить(ЧислоИзДвоичнойСтроки("10"));
Сообщить(ЧислоИзШестнадцатеричнойСтроки("10"));
Сообщить(Число("10"));
Попытка
    Неверное = ЧислоИзШестнадцатеричнойСтроки("0G");
    Сообщить(Неверное);
Исключение
    Сообщить("Некорректное шестнадцатеричное значение отклонено");
КонецПопытки;

Разбор по шагам

  1. 11111111 в двоичной системе и FF в шестнадцатеричной обозначают одно число.

  2. У текста 10 результат зависит от явно выбранной функции преобразования.

  3. Некорректную букву G обрабатываем как ошибку входящих данных.

  4. Не подменяем отсутствующее или неверное значение числом 0.

Как проверить результат

  1. Первые результаты 255 и 255, затем 2, 16 и 10.

  2. Значение 0G отклоняется через исключение.

  3. Замените FF на 0A: результат 10. Если ведущий ноль важен для идентификатора, храните исходную строку отдельно.

Ожидаемый результат

Показаны явные преобразования оснований системы счисления и отказ на неверном символе.

На что обратить внимание

  1. Для номера товара FF может быть именно строковым идентификатором — не преобразуйте его в число без контракта.

  2. Чтение сетевого пакета дополнительно требует знания порядка байтов; эти функции его не определяют.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.