Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевести функцию с си на php 
:(
    Опции темы
artmel
Дата 26.11.2015, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите пожалуйста перевести функцию с си на пхп

Код

bool do_checksums()
   {
       int i;
       unsigned int* addr;
       unsigned int sum; 
       for (i = 0; i < num_checksum_areas; i++)
       { 
           if ((checksum_areas[i].addr_start % 4) != 0)
               return false;   
           if (checksum_areas[i].addr_start > checksum_areas[i].addr_end)
               return false;   
           if ((checksum_areas[i].addr_end % 4) != 3
               && checksum_areas[i].addr_start != checksum_areas[i].addr_end)
               return false;   

           sum = 0;
           for (addr = checksum_areas[i].addr_start; addr < checksum_areas[i].addr_end; addr++;)
               sum += *addr;

           if (sum + checksum_areas[i].checksum_value != 0x55555555)
               return false;  
       }
       return true;   
   }


не понимаю конструкций
checksum_areas[i].addr_start % 4

 && checksum_areas[i].addr_start 

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


Опытный
**


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

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



Вы бы, лучше, написали что требуется сделать и что не работает. А так, не думаю что кто-то ответит.

Это сообщение отредактировал(а) s1lver - 27.11.2015, 13:07


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
artmel
Дата 27.11.2015, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



это алгоритм расчета контрольной суммы.
нужно его написать на пхп. 
смысл в том что я не могу понять сам алгоритм. если бы я понял что там, то на пхп я и сам бы переписал.
PM MAIL   Вверх
ksnk
Дата 27.11.2015, 16:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Что там непонятного-то?  smile 
checksum_areas - массив из структур такого состава {addr_start:XXX,addr_end:XXX,checksum_value:XXX}. Соответственно
checksum_areas[i].addr_start - выковырять значение нужного поля структуры.

checksum_areas[i].addr_start %4 - получить остаток от деления числа на 4. Это точно Сишник писал? Лучше было бы пару последних битов взять.

А вот адресной арифметики в PHP нету, пичалька...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
artmel
Дата 27.11.2015, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо!

к сожалению не хватает постов плюсик в репутацию добавить.
 я не знаю кто это написал, иначе бы просто спросил у него.



вроде разобрался, кроме  что такое *addr;
почему стоит звездочка?

Это сообщение отредактировал(а) artmel - 27.11.2015, 17:15
PM MAIL   Вверх
ksnk
Дата 27.11.2015, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(artmel @  27.11.2015,  17:12 Найти цитируемый пост)
вроде разобрался, кроме  что такое *addr

Это С. В переменной addr располагается адрес памяти; конструкция *addr представляет собой значение в памяти по тому адресу. Это как раз та штука, которой и нет в php.

Что за задача-то решается?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
artmel
Дата 28.11.2015, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо!
у меня это (значение по адресу) выполняет отдельно написанная функция.

Так я написал, расчитывается контрольная сумма файла.
По итогу похоже просто сложение 32битных чисел.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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