Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2009, 10:22   #1
Georgios
Пользователь
 
Аватар для Georgios
 
Регистрация: 18.01.2009
Сообщений: 57
По умолчанию Помогите переделать код С++ в Delphi (CRC)

О, славные умы!

Появилась вот такая проблемка:

Имеется код вычисление CRC16 на С++, но, к сожалению, я не знаю С. Кто сможет помочь переделать его на Delphi?

Код:
unsigned int cal_crc(unsigned cHar *ptr, unsigned char len)
{
	unsigned char i;
	unsigned int crc_value=0;
	while(len--)
	{
		for(i=0x80; i!=0; i>>=1)
		{
			if (crc_value&0x8000)
				crc_value=(crc_value<<1)^0x8005;
			else
				crc_value=crc_value<<1;
			if (*ptr&i)
				crc_value^=0x8005;
		}
		ptr++;
	}
	return(crc_value);
}

Последний раз редактировалось Stilet; 22.07.2009 в 10:28.
Georgios вне форума Ответить с цитированием
Старый 22.07.2009, 12:54   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Georgios, я, к огромному моему стыду и сожалению тоже не знаю C ...
но, у меня вопрос - а что Вы собственно хотите получить?
прежде всего - в данном коде я не вижу задания исходной таблицы полиномов для расчёта CRC (а без этой таблицы расчёт не будет верным).
во-вторых, запрос гугля по CRC16 Delphi даёт вполне адекватные результаты.
в-третьих, вот, например, маленький юнит на Дельфи для расчёта CRC16/CRC32 - Юнит для рассчета контрольных сумм (CRC 16 и 32) by J.R.Louvau

p.s. впрочем, если стоит задача именно переписать имеющийся алгоритм буква в букву - тогда прошу извинить меня за мои советы...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.07.2009, 13:28   #3
Georgios
Пользователь
 
Аватар для Georgios
 
Регистрация: 18.01.2009
Сообщений: 57
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Georgios, я, к огромному моему стыду и сожалению тоже не знаю C ...
но, у меня вопрос - а что Вы собственно хотите получить?
прежде всего - в данном коде я не вижу задания исходной таблицы полиномов для расчёта CRC (а без этой таблицы расчёт не будет верным).
во-вторых, запрос гугля по CRC16 Delphi даёт вполне адекватные результаты.
в-третьих, вот, например, маленький юнит на Дельфи для расчёта CRC16/CRC32 - Юнит для рассчета контрольных сумм (CRC 16 и 32) by J.R.Louvau

p.s. впрочем, если стоит задача именно переписать имеющийся алгоритм буква в букву - тогда прошу извинить меня за мои советы...
Во-первых, спасибо за ответ!
Во-вторых, это устройство, которое считывает инфу о автомобиле (в авто имеется карта, в которой хранится инфа). Там нужно проверять CRC16 данных. Вот две правильные строчки: (строка / значение CRC)
55 00 02 А2 00 / CC 22
55 00 01 42 / 87 8F
Georgios вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать 3 проги в Delphi. georg555 Помощь студентам 3 03.06.2009 17:08
Помогите переделать прогу с списком из С++ в Паскаль(Delphi) Olya90 Помощь студентам 3 27.05.2009 22:11
Помогите переделать код stayer Общие вопросы Delphi 3 25.10.2008 21:09
Нужно переделать код с Delphi на C++ Builder POPOV Помощь студентам 2 12.11.2007 22:51
ПОМОГИТЕ ПЕРЕДЕЛАТЬ ПРОГРАММУ ИЗ PASCAL В DELPHI Solny6ko YasnoE Помощь студентам 11 11.08.2007 15:24