Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AnsiString & HEX 
:(
    Опции темы
qwerty2200
Дата 23.11.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



Програмлю в Builder C++ 6. Появилась необходимость добавление к запросу ещё 2 байта с контрольной суммой.  
У меня есть буфер:  
AnsiString buf = "\x11\xFC\x50"; 
 
Отправляю буфер функции и получаю два байта (INT):  
AnsiString LoByte, HiByte;  
LoByte = CRC(buf, 0); // 27 
HiByte = CRC(buf, 1); // F6 
 
И вот вопрос, как мне правильно подцепить эти два байта к переменной buf? 
Пробовал и buf = buf + AnsiString("\x") + AnsiString(LoByte);  
и buf.c_str() = buf.c_str() + Char("\x") + Char(LoByte.c_str()); 
всё равно при передаче данных в comport из buf, нормальные 3 байта 11FC50 и ещё \x27\xF6  
Помогите кто чем может, а то уже даже незнаю куда копать. 
PM MAIL   Вверх
_hunter
Дата 23.11.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



можно просто
buf.sprintf("%02x", CRC(buf, 0);)
+ не понятно зачем CRC два раза считать...




--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
qwerty2200
Дата 23.11.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



Цитата(_hunter @ 23.11.2006,  14:09)
можно просто
buf.sprintf("%02x", CRC(buf, 0);)
+ не понятно зачем CRC два раза считать...

Делаю buf.sprintf("%02x", CRC(buf, 0)); получаю 9f614c, а мне надо в buf дописать 0x27

P.s. Вот такие требование по сумме в протоколе smile
P.s.s. LoByte имеет строку 27 (LoByte = "27"), а buf у меня содержит 3 байта (0x11 0xFC 0x50). Мне надо LoByte превести к виду 0x27 и добавить в buf

Помогите пожалуйста, а то уже 2 дня мучаюсь и не как немогу понять что и как делать  

Это сообщение отредактировал(а) qwerty2200 - 23.11.2006, 14:55
PM MAIL   Вверх
Vyacheslav
Дата 23.11.2006, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Тут не понятно следущее. Зачем  CRC возвращает символьное значение байтов. Теперь для того что бы корректно вставить байты в буфер придется опять преобразовывать их в байты
Или CRC все таки  возврашает байты, а не их символьное зачение,  то тогда все просто smile
Код

AnsiString buf = "\x11\xFC\x50"; 
 
AnsiString LoByte, HiByte;  
LoByte = CRC(buf, 0); // 27 
HiByte = CRC(buf, 1); // F6 
buf += LoByte + HiByteж


Добавлено @ 17:10 
Цитата(qwerty2200 @  23.11.2006,  14:42 Найти цитируемый пост)
LoByte имеет строку 27 (LoByte = "27"), а buf у меня содержит 3 байта (0x11 0xFC 0x50). Мне надо LoByte превести к виду 0x27 и добавить в buf

Так что все таки содержит LoByte: строку из двух символов '2' и '7', или char , значение которого '\27'?
Если первое, то возникает резонный вопрос : "А нафига?" И если Вы имеет доступ к коду CRC срочно поменяйте. Короче, у Вас должен быть следующий код
Код

AnsiString buf = "\x11\xFC\x50"; 
 
char LoByte, HiByte;  
LoByte = CRC(buf, 0); // 27 
HiByte = CRC(buf, 1); // F6 
buf += AnsiString(LoByte) + HiByte;





--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.