Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Корректное преобразование char -> CString  (Прочитано 7240 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dimon
Гость
« : 28-02-2005 10:03 » 

Доброе время суток Улыбаюсь
Глупый вопрос, но чё-то туплю. Есть дивайс, с которым происходит обмен данными. При чтении данных нужно отображать процесс в CEdit.
Согласно синтаксису используемой функции, данные от устройства помещаются в буфер типа char*
Требуется их корректно отобразить.
Используется конструкция:
Код:
char* pInBuffer;
CString m_RecievedData;
...

// read bytes
bytesCount = usb_bulk_read(hDev->usbDevHandle, ep, pInBuffer, m_InputDataSize, m_TimeoutValue);
...
for (int i=0; i<bytesCount; i++)
{
   m_RecievedData.AppendFormat("%01X ", pInBuffer[i]);
}
...
Всё OK, пока не приходит байт, который может быть интерпретирован как русский символ, т.е. имеющий единицу в старшем разряде. Тогда при преобразовании к нему дописывается ещё три байта с единицами. например, F6. На выходе получается:
Код:
F6 -> FFFFFFF6
Использование обычного оператора += не катит, а вывести нужно именно в виде hex.
Как сделать это корректно?
Записан
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 28-02-2005 10:23 » 

Попробуй:
m_RecievedData.AppendFormat("%01X ", (UINT)(BYTE)pInBuffer);

Думаю дело в том, что тип char это число со знаком, оттого и добавляются единицы в старшие разряды.
Можно попробовать
BYTE* pInBuffer;
(Здесь BYTE это unsigned char и UINT это unsigned int)
Записан
Dimon
Гость
« Ответ #2 : 28-02-2005 10:25 » 

Спасибо, заработало Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines