Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить

нужно переписать DEC в HEX

Пт дек 04, 2020 19:24:48

здравствуйте
изучаю avr .
по уарт принимается десятичное число 94833 и записывается в некой переменной r1[5]={0x39,0x34,0x38,0x33,0x33};
нужно чтобы после приема в другой переменной r2[5];записался HEX(17271) значение данного числа r2[5]={0x31,0x37,0x32,0x37,0x31};
как это можно организовать автоматический?

Re: нужно переписать DEC в HEX

Пт дек 04, 2020 20:01:40

Проще некуда: входную строковую переменную преобразовать в число. Скажем, uint32_t (смотря какие там диапазоны могут быть). Автоматом получили шестнадцатеричную запись. Теперь формируем строку с шестнадцатеричным представлением, поочередно анализируя квартеты (0..9 преобразуем в '0'..'9', а 10..15 — в 'a'..'f').
Читай K&R, и будет тебе счастье!

Только сдается мне, что ТЗ поставлено неправильно!

Re: нужно переписать DEC в HEX

Пт дек 04, 2020 20:19:12

Что-то типа такого:
uint32_t r = (r1[0]-'0')*10000+(r1[1]-'0')*1000+(r1[2]-'0')*100+(r1[3]-'0')*10+(r1[4]-'0');
r2[0] = r/65536+'0';
r2[1] = r%65536/4096+'0';
r2[2] = r%4096/256+'0';
r2[3] = r%256/16+'0';
r2[4] = r%16+'0';

PS. Есть косяк с преобразованием цифр более девяти в буквы. Исправлять не буду, лениво, предлагаю аффтору вопроса самому это сделать. Это легко и просто.

PPS. По-хорошему, надо ещё входные данные проверять на валидность, в случае невалидных данных материться ERRORом, благо формат выходных данных позволяет.

Добавлено after 7 minutes 48 seconds:
Читай K&R, и будет тебе счастье!
Да чо уж там, пусть сразу Кнута читает. Все три тома.
Последний раз редактировалось mickbell Пт дек 04, 2020 22:16:21, всего редактировалось 4 раз(а).

Re: нужно переписать DEC в HEX

Пт дек 04, 2020 20:31:57

Да чо уж там, пусть сразу Кнута читает. Все три тома.

На мой взгляд, единственная полезная книга Кнута — "Все про ТеХ". А "Искусство программирования" — херня какая-то абстрактная в вакууме!

Re: нужно переписать DEC в HEX

Пт дек 04, 2020 20:59:33

Оно считается кладезью алгоритмов. А алгоритмы как раз и должны быть описаны абстрактной хернёй в вакууме.

Re: нужно переписать DEC в HEX

Пт дек 04, 2020 21:59:10

большое спасибо.
начинаю изучать предложенный материал и отпишусь по итогам.

Re: нужно переписать DEC в HEX

Пт дек 04, 2020 22:17:10

Перегрузите страницу и перечитайте моё сообщение, по ходу поправляю очепятки.
Ну и пара слов о том, как буквы делать. Смотрите таблицу ASCII-кодов с кодами 0x3A-0x3F, там знаки препинания, надо сделать их замену на буквы. Или сразу по ходу заполнения выходного массива: если r2[i] не более 9, то прибавлять 0x30 или '0', а если больше, то прибавлять 0x37 или '7'.
Ответить