Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
1-25817
Maximus
2004-02-27 08:31
2004.03.09
Cемантический анализ текста


14-25930
Chupcan
2004-02-14 14:18
2004.03.09
Ос на Паскале?


6-25837
Typoi_Beginer
2003-12-28 18:29
2004.03.09
Передача данных на удалённый комп.


1-25751
Незнающий
2004-02-27 09:58
2004.03.09
Можно ли программно реализовать следующие действия:


14-25936
Soft
2004-02-15 00:19
2004.03.09
Голубая кровь!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский