|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Как перевести в Delphi код C
Господа ,помогите перевести следущее, написанное на C
Код:
i=data[0]; i=(i<<8)+data[1]; i=(i<<8)+data[2]; i=(i<<8)+data[3]; if(i==0)return; if(dsize<(i+4))return; i=decrypt_with_vector(ethkey,ethvector,(LPBYTE)data+4,(LPBYTE)datai,i,0); Последний раз редактировалось lmikle, 21.06.2017 в 22:58. |
#2
|
|||
|
|||
ну, i << 8 это i shl 8
При этом i видимо типа long (Integer) - 4 байта. data - что-то типа array of byte Не знаю, что такое decrypt_with_vector - с этим сам разбирайся, а остальное выглядит как-то так: Код:
var I : Integer; begin I := data[0]; I := (I shl 8) + data[1]; I := (I shl 8) + data[2]; I := (I shl 8) + data[3]; If (I = 0) Or (I+4 < dsize) then exit; // что такое decrypt_with_vector??? I := decrypt_with_vector(...); |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
ComAlex (22.06.2017)
|
#3
|
|||
|
|||
Подскажите еще:
Как корректно перевести: ... unsigned long lr[3]; signed long i; lr[1]=0; lr[2]=0; permut(((unsigned char*)(&(lr[1]))),input,ip); ... где void permut(unsigned char * out,const unsigned char * in, const unsigned char * table) { unsigned long i; for(i=1;*table;i++) { // if(bittest(in,*table)) // На это можно не смотреть // bitset(out,i); // На это можно не смотреть table++; } } 1. Больше всего интересует преобразование (((unsigned char*)(&(lr[1]))). Как первый параметр функции permut так превратился .... 2. И непонятно table++ КАК это всё написать (перевести) на DELPHI ??? |
#4
|
||||
|
||||
Код:
unsigned char*)(&(lr[1]))) table++ - переход к следующему элементу массива table. З.Ы. Совершенно непонятно, зачем делать массив lr из 3 элементов и потом игнорировать один из них (нулевой). jmp $ ; Happy End! The Cake Is A Lie. |