Как строку с сериал преобразовать в uint64_t
- Войдите на сайт для отправки комментариев
Втр, 29/06/2021 - 14:06
Пробовал разобраться сам не смог осилить, как строку полученную с сериал порта преобразовать в uint64_t?
Попалась такая информация по scanf.
Правильный формат для чтения uint64_t
(typedef unsigned long long int) - это scanf
, а не sscanf
, "%" SCNu64
, а для печати также пример SCNu64 . в своем коде вы читаете, например, переменную my_integer, а затем делаете scanf ("Value of integer:%" SCNu64, & my_integer);
и написать то же самое, но с printf.
Можно конкретный пример с этой строкой или другие какие методы есть число 10200000000ULL получить из строки?
scanf ("Value of integer:%" SCNu64, & my_integer);
Читай документацию, а не какие-то левые обсуждения вещей которых ты не понимаешь.
Пробовал разобраться сам не смог осилить, как строку полученную с сериал порта преобразовать в uint64_t?
ну например прочитай из Сериал два числа uint32 и потом умножь их друг на друга...
ingfa,
я как-то запускал эти форматы для scanf/printf, они не заработали (правда, я особо не напрягался разбираться что именно пошло не так).
А что Вам мешает просто вручную преобразовать 64-битное беззнаковое в строку и обратно? По мне так, даже если это писать тупо в лоб, безо всякой оптимизации, всё равно должно быть лучше scanf/printf по времени, а про память я уж вообще молчу.
Это ж ввод-вывод. Оптимизация не имеет смысла.
Вот, пусть будет ради "отмывки кармы" ;))
От опять забыл дописать.
Проверено на Нано old bootloader, IDE 1.8.13
Оно, конечно,
но, всё-таки
21 - за глаза хватит.
Оно, конечно,
но, всё-таки
21 - за глаза хватит.
мы фкурсе! ;)) но 32 - это степень двойки... сам понимаешь, хотя 21 - тоже знатное число!
(Ох не очко меня сгубило, а к одиннадцати туз!)
Так и я ж подумал, что использовать большее значение, чем 21 - перебор! :-)
Так и я ж подумал, что использовать большее значение, чем 21 - перебор! :-)
Спасибо вам ЕвгенийП, когда то давно вы написали такой код
Я его переделал
float
value
на uint64_t.А через python 3 я передаю переменную,
peremennya = 10200000000 согласно https://docs.python.org/3/library/struct.html
peremennya = struct.
pack
( "Q",peremennya )serial.write(peremennya)