Перевод из шестнадцатеричного числа в десятичное
Необходимо было сопряжение фискального регистратора(ФР) Штрих.. — установка времени компьютера на фискальном регистраторе — пришлось общаться с ФР с помощью команд в шестнадцатеричном формате. Перевод из десятичного формата в шестнадцатеричный нашел — http://infostart.ru/public/83824/, а обратно нет, пришлось написать. И вот что получилось
- Описание
- Подробнее
Описание
Функция ПеревестиЧислоИзШестнадцатиричногоВДесятичное(СтрокаХекс) Экспорт
мСтрокаХекс = СокрЛП(СтрокаХекс);
СтрДлинаХексЧисла = СтрДлина(мСтрокаХекс);
ДесятичноеЧисло = 0;
Для Сч = 0 По СтрДлинаХексЧисла-1 Цикл
Множитель = Pow(16,Сч);
//Сообщить(«Множитель:»+Строка(Множитель));
НехЧисло1Байт = Сред(мСтрокаХекс,СтрДлинаХексЧисла-Сч,СтрДлинаХексЧисла-Сч);
//Сообщить(«ХексЧисло1Байт:» + НехЧисло1Байт);
Если НехЧисло1Байт = «A» Тогда
ДесятичноеЧисло = ДесятичноеЧисло + 10*Множитель;
ИначеЕсли НехЧисло1Байт = «B» Тогда
ДесятичноеЧисло = ДесятичноеЧисло + 11*Множитель;
ИначеЕсли НехЧисло1Байт = «C» Тогда
ДесятичноеЧисло = ДесятичноеЧисло + 12*Множитель;
ИначеЕсли НехЧисло1Байт = «D» Тогда
ДесятичноеЧисло = ДесятичноеЧисло + 13*Множитель;
ИначеЕсли НехЧисло1Байт = «E» Тогда
ДесятичноеЧисло = ДесятичноеЧисло + 14*Множитель;
ИначеЕсли НехЧисло1Байт = «F» Тогда
ДесятичноеЧисло = ДесятичноеЧисло + 15*Множитель;
Иначе
Попытка
ДесятичноеЧисло = ДесятичноеЧисло + Число(НехЧисло1Байт)*Множитель;
Исключение;
//не число от 0 до 9
КонецПопытки
КонецЕсли;
КонецЦикла;
Возврат ДесятичноеЧисло;
КонецФункции
