Russian Qt Forum

Программирование => С/C++ => Тема начата: izoomer от Февраля 05, 2007, 00:14



Название: из С в С++
Отправлено: 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 от Февраля 05, 2007, 00:19
А никак. Советую прям в таком виде и оставить!!! Другой вопрос в том, что саму функцию надо адаптировать к массивам Qt, или к стандартным шаблонам. Но это не так и трудно, ИМХО.


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

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


Название: из С в С++
Отправлено: nova от Февраля 05, 2007, 22:10
А это зависит от того что ты собераешся использовать для хранения данных у себя в софте :)


Название: из С в С++
Отправлено: Steven_Orko от Февраля 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.


Название: из С в С++
Отправлено: Вудруф от Февраля 06, 2007, 08:04
Цитировать
Вместо std::vector можешь спокойно подставить QVector.

Зачем? ИМХО, когда можно обойтись только стандартной библиотекой, лучше её и использовать. А Qt нужна для расширенных возможностей.
Другое дело, когда мы используем вектора для работы с функциями Qt, которые принимают Qt-шные контейнеры.


Название: из С в С++
Отправлено: Steven_Orko от Февраля 06, 2007, 19:31
Цитата: "Вудруф"

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


Именно на этот случай я и написал данное предложение. )))) :)


Название: из С в С++
Отправлено: bigirbis от Февраля 06, 2007, 22:13
Говорят, что stl поддерживается различными компиляторами по разному...
По крайней мере, Тролли на это напирают...


Название: из С в С++
Отправлено: Вудруф от Февраля 07, 2007, 12:29
Вывод: не использовать эти самые "различные" компиляторы :) А вообще уже оффтопик пошёл, сорри.