Russian Qt Forum
Ноябрь 22, 2024, 23:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: из С в С++  (Прочитано 6352 раз)
izoomer
Гость
« : Февраль 05, 2007, 00:14 »

есть такой вот код на С
Код:

const unsigned char crc8_tabl[]=
{
0,56,34,345,67,89,343,108 ........ .
...
....
};
/*
str - указатель на начало массива crc которого считаем
byte - размер этого массива
*/
unsigned char crc8 (unsigned char *str,unsigned char byte)
{
  unsigned char crc8=0;
  int index;
  while (byte){
  crc8=crc8_tabl[crc8 ^ *str++];
  --byte;
}
return crc8;
}


Поскажите как гармотно в QT перевести и что оптимальнее использовать.

на С этот код используется так ....
Код:

     unsigned char OutBuff[6];
     OutBuff[0]='F';
     OutBuff[1]=4;
     OutBuff[2]='G';
     OutBuff[3]='S';
     OutBuff[4]=56;
     OutBuff[5]=crc8(OutBuff,5);
Записан
Steven_Orko
Гость
« Ответ #1 : Февраль 05, 2007, 00:19 »

А никак. Советую прям в таком виде и оставить!!! Другой вопрос в том, что саму функцию надо адаптировать к массивам Qt, или к стандартным шаблонам. Но это не так и трудно, ИМХО.
Записан
izoomer
Гость
« Ответ #2 : Февраль 05, 2007, 10:32 »

Цитата: "Steven_Orko"
А никак. Советую прям в таком виде и оставить!!! Другой вопрос в том, что саму функцию надо адаптировать к массивам Qt, или к стандартным шаблонам. Но это не так и трудно, ИМХО.

ну вот и хотел узнать как правильно адаптировать или хотя бы какие механизмы использовать ...
Записан
nova
Гость
« Ответ #3 : Февраль 05, 2007, 22:10 »

А это зависит от того что ты собераешся использовать для хранения данных у себя в софте Улыбающийся
Записан
Steven_Orko
Гость
« Ответ #4 : Февраль 05, 2007, 22:19 »

Код:
uchar crc8(std::vector<uchar> array)
{
uchar ucrc8 = 0;
std::vector<uchar>::iterator current = array.begin();
std::vector<uchar>::const_iterator last = array.end();
while (current != last) ucrc8 = crc8_tabl[ucrc8 ^ *current++];
return ucrc8;
}


Вместо std::vector можешь спокойно подставить QVector.
Записан
Вудруф
Гость
« Ответ #5 : Февраль 06, 2007, 08:04 »

Цитировать
Вместо std::vector можешь спокойно подставить QVector.

Зачем? ИМХО, когда можно обойтись только стандартной библиотекой, лучше её и использовать. А Qt нужна для расширенных возможностей.
Другое дело, когда мы используем вектора для работы с функциями Qt, которые принимают Qt-шные контейнеры.
Записан
Steven_Orko
Гость
« Ответ #6 : Февраль 06, 2007, 19:31 »

Цитата: "Вудруф"

Другое дело, когда мы используем вектора для работы с функциями Qt, которые принимают Qt-шные контейнеры.


Именно на этот случай я и написал данное предложение. )))) Улыбающийся
Записан
bigirbis
Гость
« Ответ #7 : Февраль 06, 2007, 22:13 »

Говорят, что stl поддерживается различными компиляторами по разному...
По крайней мере, Тролли на это напирают...
Записан
Вудруф
Гость
« Ответ #8 : Февраль 07, 2007, 12:29 »

Вывод: не использовать эти самые "различные" компиляторы Улыбающийся А вообще уже оффтопик пошёл, сорри.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.