crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Преобразование 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, Большое спасибо за ответ. Буду разбираться!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.4.2024, 15:39