Andysoft3C
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Привет всем. Подскажите как перевести такой код из Си в Delphi const unsigned long CRC24tab[256] = { 0x00000000, 0x00864CFB, 0x008AD50D, 0x000C99F6, 0x0093E6E1, 0x0015AA1A, 0x001933EC, 0x009F7F17, 0x00A18139, 0x0027CDC2, 0x002B5434, 0x00AD18CF, 0x003267D8, 0x00B42B23, 0x00B8B2D5, 0x003EFE2E, ... }; Добавлено: И вот такой код Си->Delphi если не затруднит const unsigned short CMatrix[8] = {0xd4, 0xa9, 0x53, 0xa6, 0x4d, 0x9a, 0x35, 0x6a}; // корректирующая таблица для кода [16,8] const unsigned char ucSyndromes[256] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x10, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0xff, 0xff, 0x00, 0xff, 0x20, 0xff, 0xff, 0xff, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x40, 0x08, 0x90, 0x00, 0x02, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x40, 0xff, 0x22, 0x40, 0x40, 0xff, 0x40, 0xff, 0x84, 0xff, 0xff, 0x28, 0x40, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0x80, 0xff, 0x10, 0x10, 0x21, 0x10, 0x00, 0x04, 0x04, 0x04, 0x01, 0xff, 0xff, 0x04, 0xff, 0xff, 0xff, 0x04, 0xff, 0x10, 0xff, 0xc0, 0x00, 0xff, 0x80, 0xff, 0xff, 0xff, 0x44, 0xff, 0x80, 0xff, 0x80, 0x80, 0xff, 0x10, 0x80, 0xff, 0xff, 0xff, 0x09, 0x04, 0xff, 0x40, 0xff, 0xff, 0x50, 0xff, 0x80, 0xff, 0xff, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x08, 0x05, 0x00, 0x02, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x20, 0x48, 0x01, 0xff, 0xff, 0xff, 0x20, 0x11, 0x20, 0x20, 0x42, 0xff, 0x20, 0xff, 0x00, 0x02, 0x08, 0xff, 0x08, 0xff, 0x08, 0x08, 0x02, 0x02, 0xff, 0x02, 0xff, 0x02, 0x08, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0x40, 0x08, 0xff, 0xff, 0x02, 0x20, 0xff, 0xff, 0xff, 0x81, 0xff, 0x00, 0xff, 0xff, 0x82, 0x01, 0xff, 0xff, 0xff, 0xff, 0x24, 0xff, 0xff, 0x88, 0x10, 0xff, 0xff, 0x01, 0xff, 0xff, 0x04, 0x01, 0x01, 0x01, 0x30, 0xff, 0xff, 0x20, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0x41, 0xff, 0xff, 0x12, 0xff, 0x08, 0xff, 0xff, 0x02, 0x80, 0x18, 0xff, 0xff, 0xff, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x01, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x06, 0xff, 0xff, 0xff, 0xff, 0xff }; // end of ucSyndromes[] // // синдромный декодер // возвращаемое значение: // - 0x8000, если ошибка обнаружена, но не может быть исправлена // - декодированный байт - во всех остальных случаях (включая // ложное декодирование) // unsigned short FecDecoder (unsigned short arg) { int i; unsigned short res, sft; res = 0; sft = arg; for (i = 0; i < 8; i++) { if (sft & 1) { res ^= CMatrix[i]; } sft >>= 1; } // end of for(i) res ^= sft; res = ucSyndromes[res]; if (res == 0xff) { arg = 0x8000; } else { arg = (arg ^ res) & 0x00ff; } return arg; } // end of FecDecoder() // end of file |