Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Пт дек 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};
как это можно организовать автоматический?
Пт дек 04, 2020 20:01:40
Проще некуда: входную строковую переменную преобразовать в число. Скажем, uint32_t (смотря какие там диапазоны могут быть). Автоматом получили шестнадцатеричную запись. Теперь формируем строку с шестнадцатеричным представлением, поочередно анализируя квартеты (0..9 преобразуем в '0'..'9', а 10..15 — в 'a'..'f').
Читай K&R, и будет тебе счастье!
Только сдается мне, что ТЗ поставлено неправильно!
Пт дек 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 раз(а).
Пт дек 04, 2020 20:31:57
Да чо уж там, пусть сразу Кнута читает. Все три тома.
На мой взгляд, единственная полезная книга Кнута — "Все про ТеХ". А "Искусство программирования" — херня какая-то абстрактная в вакууме!
Пт дек 04, 2020 20:59:33
Оно считается кладезью алгоритмов. А алгоритмы как раз и должны быть описаны абстрактной хернёй в вакууме.
Пт дек 04, 2020 21:59:10
большое спасибо.
начинаю изучать предложенный материал и отпишусь по итогам.
Пт дек 04, 2020 22:17:10
Перегрузите страницу и перечитайте моё сообщение, по ходу поправляю очепятки.
Ну и пара слов о том, как буквы делать. Смотрите таблицу ASCII-кодов с кодами 0x3A-0x3F, там знаки препинания, надо сделать их замену на буквы. Или сразу по ходу заполнения выходного массива: если r2[i] не более 9, то прибавлять 0x30 или '0', а если больше, то прибавлять 0x37 или '7'.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.