Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с HEX числами 
:(
    Опции темы
edgik
Дата 1.12.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Имеем 2 HEX числа, которые были получены путем суммирования нескольких: 2f8 и 4C4 Необходимо вычислить контрольную сумму, которая вычсиляется след. образом: от младшего числа 4C4 откусывается 2 символа, и получаем C4, а второе число контрольной суммы получаем путем
суммирования того, что осталось от первого, т.е. 4  с 2F8 и получаем 2FC, от которого откусываем опять же FC и получаем в итоге контрольную сумму FC C4.

Первое что пришло в голову это пооткусывать через

Код


substr($i,-2,1);
substr($i,0,1);

substr($y,-2,1);
substr($y,0,1);



а потом уже суммировать. А красивее решения для вычисления нет? 
Вдобавок кстати число может быть и не 3 разрядное, а например 4 FCDF, тут к substr придется еще и вычисление количества символов в 
HEX добавить.

PM MAIL   Вверх
nitr
Дата 1.12.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Может посмотреть в сторону модулей?

Как варинат http://search.cpan.org/~olimaul/Digest-CRC...b/Digest/CRC.pm


--------------------
PM   Вверх
amg
Дата 1.12.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

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



Замысловато и, скорее всего, не эффективно:
Код

$_= '2f8 4C4';
$s = '';
1 while s{(?:^|(\S+)\s+)(\S*)(\S\S)$}
         {$s="$3 $s"; sprintf "%X", hex($1||0)+hex($2||0)}e;
print $s;


PM MAIL   Вверх
edgik
Дата 2.12.2007, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(nitr @ 1.12.2007,  13:49)
Может посмотреть в сторону модулей?

http://search.cpan.org/~olimaul/Digest-CRC...b/Digest/CRC.pm


Не, у меня готовый алгоритм вычисления, мне надо под него подстраиваться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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