Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

C ==> Pascal   Найти похожие ветки 

 
Pat ©   (2004-02-25 21:01) [0]

Переведите, пожалуйста, в Паскаль...

define HASHLEN 16
typedef char HASH[HASHLEN];
#define HASHHEXLEN 32
typedef char HASHHEX[HASHHEXLEN+1];
#define IN
#define OUT
.................................
void CvtHex(
IN HASH Bin,
OUT HASHHEX Hex
)
{
unsigned short i;
unsigned char j;

for (i = 0; i < HASHLEN; i++) {
j = (Bin[i] >> 4) & 0xf;
if (j <= 9)
Hex[i*2] = (j + "0");
else
Hex[i*2] = (j + "a" - 10);
j = Bin[i] & 0xf;
if (j <= 9)
Hex[i*2+1] = (j + "0");
else
Hex[i*2+1] = (j + "a" - 10);
};
Hex[HASHHEXLEN] = "\0";
};


 
Defunct ©   (2004-02-25 21:14) [1]

Const HashLen = 16;
HashHexLen = 32;

Type Hash = Array[0..HashLen] of Char;
HashHex = Array[0..HashHexLen] Of Char;

.............
Procedure CvtHex(Bin : Hash; var Hex : HashHex);
Var I:Integer;
J:Byte;
Begin
For I:=0 To Hashlen-1 Do
Begin
J := Bin[i] and $F;
If J<=9 Then Hex[i*2] := Char(j+$30)
Else Hex[i*2] := Char(j+Byte("A")-10));
J := Bin and $F;
If J<=9 Then Hex[i*2+1] = Char(j+$30)
Else Hex[i*2+1] = Char(j+Byte("A")-10);
Hex[HashHexLen] := #0;
End;
End;


 
jack128 ©   (2004-02-25 21:16) [2]


> Hash = Array[0..HashLen - 1] of Char;


> J := (Bin[i] shr 4) and $F;


 
Defunct ©   (2004-02-25 21:16) [3]

Опс.. обшибся..

Type Hash = Array[0..HashLen] of Byte;

и тут:
For I:=0 To Hashlen-1 Do
Begin
J := (Bin[i]>4) and $F;


 
jack128 ©   (2004-02-25 21:20) [4]


> Defunct © (25.02.04 21:16) [3]
Не знаю насколько верны твои исправления ;-) Лудше скажи с чего Hex по ссылке передаешь??


 
Defunct ©   (2004-02-25 21:20) [5]

jack128 © (25.02.04 21:16) [2]
Спасибо, что поправили! Я что-то пропустид ">>" показалось ">"


 
Defunct ©   (2004-02-25 21:22) [6]

> Лудше скажи с чего Hex по ссылке передаешь??
Я так понял Hex это то, что возвращается после преобразования, иначе какой смысл этой функции, вот Var и влепил


 
jack128 ©   (2004-02-25 21:27) [7]


> Я так понял Hex это то, что возвращается после преобразования,
> иначе какой смысл этой функции, вот Var и влепил

Не-е-е , так дело не пойдет...ПО смыслу может и так, а вот по синтексису где это видно??


 
Defunct ©   (2004-02-25 21:43) [8]

> Не-е-е , так дело не пойдет...ПО смыслу может и так, а вот по синтексису где это видно??

Здесь:

void CvtHex(IN HASH Bin, OUT HASHHEX Hex )


 
Defunct ©   (2004-02-25 21:44) [9]

Как иначе на паскале реализовать OUT, если не через VAR?


 
jack128 ©   (2004-02-25 21:55) [10]

OUT пустое место см
> #define OUT

в си передача по ссылке пишится так
void CvtHex(
IN HASH Bin,
OUT HASHHEX &Hex
)


 
Gero ©   (2004-02-25 21:56) [11]

> Defunct © (25.02.04 21:44) [9]

А Out не подойдет?


 
Verg ©   (2004-02-25 22:00) [12]


> в си передача по ссылке пишится так
> void CvtHex(
> IN HASH Bin,
> OUT HASHHEX &Hex
> )


Ссылочный тип есть в С++.

Переменная типа массив - это всегда ее (его, массива) адрес, за исключением пожалуй операции sizeof.

char a[10] - sizeof a =10
char *a - sizeof a = sizeof(char*)

Хотя и там и там одинаково допускается операция индексирования ( [])


 
Verg ©   (2004-02-25 22:11) [13]

С передачей параметров в процедуру - порядок, за исключением того, что надо бы и у первого массива поставить var

Ну и "пустячок" такой:

> Type Hash = Array[0..HashLen -1] of Char;
> HashHex = Array[0..HashHexLen] Of Char;


 
Pat ©   (2004-02-25 23:33) [14]

Всем бо-о-о-о-о-льшое спасибо :-) Все теперь стало на свои места. Практически :-((
Вобщем, эта процедура - аналог функции:

function MD5DigestToStr(const Digest: TMD5Digest): string;
var
i: Integer;
begin
Result:="";
for i:=0 to 15 do Result:=Result+LowerCase( IntToHex(Digest.v[i], 2));
end;



Страницы: 1 вся ветка

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
6-25842
csr
2003-12-31 11:10
2004.03.09
TidSMTP и результат его работы!


1-25770
Janbolat
2004-02-26 11:19
2004.03.09
Installshieldexpress для Delphi 6


1-25772
Tatyana
2004-02-26 14:21
2004.03.09
#0, AccessViolation


1-25749
Senti
2004-02-25 20:48
2004.03.09
Вопрос по созданию и загрузке форм !


1-25753
Sig22
2004-02-26 15:59
2004.03.09
combo box и файл с расширением dat