Помогите перенести на ПХП

Wi-Fi

Новичок
Проблема: Есть код на С по определению чексуммы числа по стандарту ISO7064 MOD 37, 36 и как то не выходит самостоятельно перенести в пхп по аналогии


код на С:
PHP:
char get_iso7064_mod37_36(char *s)
{
int i;
int P=0;
int M, M1; /* Modulus */
/* table convert ASCII character to ISO/IEC 7064 values */
char ascii2isoval[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 2 ,3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0,
0,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,
25,26,27,28,29,30,31,32,33,34,35,0, 0, 0, 0, 0,
0,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, /* handle lower
characters like upper characters */
25,26,27,28,29,30,31,32,33,34,35};
/* table convert ISO/IEC 7064 values to ASCII character */
char isoval2ascii[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z', '*'};
/* check if alphabetic character is within limits */
for(i=0;s[i];i++)
if ((s[i] < 0) || (sizeof(ascii2isoval) <= s[i]))
return -1;
M = 36;
M1 = M+1;
P = M;
for(i=0;s[i];i++)
{
P += ascii2isoval[s[i]];
if (P > M) P -= M;
P *= 2;
if (P >= M1) P -= M1;
}
P = M1 - P;
return (P == M) ? isoval2ascii[0] : isoval2ascii[P];
}
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а в чем конкретно нужно помочь? надеюсь, ты не хочешь сказать, что словом "помогите" ты заменил слово "сделайте"?
 

Wi-Fi

Новичок
Поправил 1 пост ... то что получилось у меня и как то не работает
 

С.

Продвинутый новичок
Ты ведь ни бельмеса ни РНР, ни в программировании вообще. Правда?
 

Redjik

Джедай-мастер
А почему нельзя сделать экстеншеном?
Зачем вообще что-либо переписывать?
 

Beavis

Banned
сорри сейчас добавлю недостающий кусок...
какой ещё недостающий кусок?
наоборот, ты нагородил лишнего.. у тебя была 1 функция, а стало 4, и ещё обёрнутые в класс.. что позволяет думать что это вообще сделано не тобой :)
 

Wi-Fi

Новичок
какой ещё недостающий кусок?
наоборот, ты нагородил лишнего.. у тебя была 1 функция, а стало 4, и ещё обёрнутые в класс.. что позволяет думать что это вообще сделано не тобой :)
-> "а вот как сделать это на ПХП честно скажу не очень представляю", поэтому и вышла каша 5 функций "обёрнутых" в класс.

Да и судя по ответам тут все мега гуру в пхп от рождения.. удачи всем от кого кусок отвалился.


В итоге спасибо за совет о екстеншене Redjik. на своём железе он помог. а вот не на своём остаётся ломать голову и читать ...
 

Вурдалак

Продвинутый новичок
Ну да, ради функции на 5 строк нужно экстенш к PHP делать, это конечно true way, мы такие крутые и правильные, ога. А перевести на PHP — ну непосильная задача.
 

Wi-Fi

Новичок
Ну да, ради функции на 5 строк нужно экстенш к PHP делать, это конечно true way, мы такие крутые и правильные, ога. А перевести на PHP — ну непосильная задача.
Зато екстеншн работает... а на пхп.. знал бы как... переписал бы.
 

С.

Продвинутый новичок
Короче, Wi-Fi, да здесь собрались гуру. Ответим на твои конкретные вопросы, посоветуем. Разбирать твое говно по кусочкам, подтирать сопли, делать за тебя не будем.
 

AmdY

Пью пиво
Команда форума
Смотри, я прикрепил скриншёт из нормального редактора.
for($i>0;$str[$i];$i++) - нужно for($i=0;$str[$i];$i++)
strlen($key2iso) - strlen($key2iso)
P >= M1 - в php переменные начинаются с $
return (P == M ? $checkdg[0] : $checkdg[$P]); - откуда это берётся

Попробуй переписать 1 в 1 с исходного примера. только добавив $ перед переменными, вместо объявления int i; сразу используй присваивание $i = 0; и т.д. разницы особой нет, php является сиподобным языком, даже название функций совпадает. Если не получится вечером стукни мне в скайп, после работы смогу набросать скрипт.
 

Вложения

Ragazzo

TDD interested
AmdY
<немного оффтопа>
Кстати тебе реально норм с "темной" темой код писать? Я попробовал так немного, но глаза еще больше стали уставать( А некоторые вообще в IDE используют "кислотные" темы.
</немного оффтопа>
 

Wi-Fi

Новичок
AmdY
<немного оффтопа>
Кстати тебе реально норм с "темной" темой код писать? Я попробовал так немного, но глаза еще больше стали уставать( А некоторые вообще в IDE используют "кислотные" темы.
</немного оффтопа>
В Тёмном очень удобно кстати ... по привычке через ссх всегда всё тёмное :) особенно если ночью то вобще сказка в тёмных тонах работать
 

AmdY

Пью пиво
Команда форума
Ragazzo
Я всегда фон затемняю, но обычно делаю лишь слегка сероватым (как на форуме типа фона F9F9FA), а здесь воспользовался готовой. Мне кажется темная действительно тяжёловатая для глаз тема, но она лучше других под новый дёмный phpstrom eap вписывается. В нетбинсе у меня стандартная светлая схема.
 
Сверху