| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Перевести функцию с си на php |
| Автор: artmel 26.11.2015, 22:42 | ||
Помогите пожалуйста перевести функцию с си на пхп
не понимаю конструкций checksum_areas[i].addr_start % 4 && checksum_areas[i].addr_start |
| Автор: s1lver 27.11.2015, 13:07 |
| Вы бы, лучше, написали что требуется сделать и что не работает. А так, не думаю что кто-то ответит. |
| Автор: artmel 27.11.2015, 14:18 |
| это алгоритм расчета контрольной суммы. нужно его написать на пхп. смысл в том что я не могу понять сам алгоритм. если бы я понял что там, то на пхп я и сам бы переписал. |
| Автор: ksnk 27.11.2015, 16:11 |
| Что там непонятного-то? checksum_areas - массив из структур такого состава {addr_start:XXX,addr_end:XXX,checksum_value:XXX}. Соответственно checksum_areas[i].addr_start - выковырять значение нужного поля структуры. checksum_areas[i].addr_start %4 - получить остаток от деления числа на 4. Это точно Сишник писал? Лучше было бы пару последних битов взять. А вот адресной арифметики в PHP нету, пичалька... |
| Автор: artmel 27.11.2015, 17:12 |
| Спасибо! к сожалению не хватает постов плюсик в репутацию добавить. я не знаю кто это написал, иначе бы просто спросил у него. вроде разобрался, кроме что такое *addr; почему стоит звездочка? |
| Автор: ksnk 27.11.2015, 23:12 |
Это С. В переменной addr располагается адрес памяти; конструкция *addr представляет собой значение в памяти по тому адресу. Это как раз та штука, которой и нет в php. Что за задача-то решается? |
| Автор: artmel 28.11.2015, 09:47 |
| Спасибо! у меня это (значение по адресу) выполняет отдельно написанная функция. Так я написал, расчитывается контрольная сумма файла. По итогу похоже просто сложение 32битных чисел. |