Преобразование ASCII символов в их код и работа как с числом, Необходимо получить код символа ASCII и работать с ним как с числом |
Здравствуйте, гость ( Вход | Регистрация )
Преобразование ASCII символов в их код и работа как с числом, Необходимо получить код символа ASCII и работать с ним как с числом |
georgiy2590 |
26.4.2015, 5:17
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 26.4.2015 Пользователь №: 4370 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте у меня есть микроконтроллер STM32 он подключен к компьютеру по USB (Virtual Com) и определяется в системе как COM порт. Микроконтроллер отсылает значения АЦП (uint8_t) программа написанная по примеру из интернета на QT 5.4 с использование встроенной библиотеки QTSerialPort. Так вот программа отображает принятые значения как символы ASCII а мне необходимо получить код этого символа и работать в дальнейшем с ним как с числом (провести арифметические действия ) а потом отобразить в программе ( я так понял потом число надо преобразовать в строку и отображать уже), пожалуйста подскажите как мне правильно получить код символа и работать с ним как с числом искал в интернете, но не очень понял как все таки делать это правильно в С/С++ познания практически нулевые, а доделать программу необходимо. Заранее большое спасибо!
|
|
|
lanz |
26.4.2015, 12:34
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
В C++ можно работать и с char и с uint8_t как с числами. Никаких преобразований не нужно.
Не забудьте только что char - это число со знаком. |
|
|
georgiy2590 |
26.4.2015, 13:20
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 26.4.2015 Пользователь №: 4370 Спасибо сказали: 0 раз(а) Репутация: 0 |
lanz, Спасибо за ответ а можно пример вот я например принимаю данные QByteArray bytes1 = serial->readAll(); с контроллера постоянно поступает число 255(для примера шлю) как мне дальше изъять данные в переменную например int ?
lanz, QByteArray bytes1 = serial->readAll(); int dec = (int)bytes1[0]; qDebug()<<dec; Так вот отправляю число 62 в отладочной консоли видно нормальное число 62 а вот если 255 то -1 хотел спросить это проблема тока отображения отладочной консоли ? то есть если я с этим числом произведу арифметические действия то производиться будет с 255 а не с -1 ? |
|
|
lanz |
26.4.2015, 19:14
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
int - знаковый тип и operator[] тоже возвращает знаковый char. В зависимости от того что вы хотите сделать, можно либо получить:
int dec = (0xFF & bytes1[0]) // dec = 255 Либо что еще лучше - использовать беззнаковый тип как есть: quint8 dec = bytes1[0]; // dec = 255 |
|
|
georgiy2590 |
27.4.2015, 2:13
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 26.4.2015 Пользователь №: 4370 Спасибо сказали: 0 раз(а) Репутация: 0 |
lanz, Большое спасибо за ответ. Буду разбираться!
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 12:36 |