я хочу знать, если кто-то здесь уже сделал некоторую проверку адреса бумажника в Delphi?
если нет, то я пытаюсь преобразовать код C, который способен подтвердить бумажник адрес Bitcoin и это очень трудно, потому что я не знаю много о языке Си.
Вот:https://rosettacode.org/wiki/Bitcoin/address_validation#C, это код C используется в качестве ссылки и ниже точки до, где я нахожусь в состоянии сделать.
Так что, кто-то может мне помочь?
Код:
{$ APPTYPE CONSOLE}
{$ R * .res}
использования
SysUtils;
Const
Tmpl = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
SHA256_DIGEST_LENGTH = 32;
функционировать UnBase58 (S: PWideChar; Outter: Байт): Integer;
вар
I, J: целое число;
C: Extended;
Р: PWideChar;
начать
Результат: = 0;
FillChar (Outter, 0, 25);
для I: = 0 до Длина (S) делают
начать
P: = StrPos (PWideChar (Tmpl), PWideChar (S [I]));
если Р = нуль, то
Выход;
C: = Р - PWideChar (TMPL);
для J: = 25 0 Downto делать
начать
С: = С + 58 * Outter [Дж];
Outter [J]: = С по модулю 256;
С: = С / 256;
конец;
// если С, то выход;
конец;
Результат: = 1;
конец;
Функция Действительный (S: PWideChar): Целое число;
вар
д, d1, d2: массив [0..SHA256_DIGEST_LENGTH] из байт;
начать
если UnBase58 (S, D) = 0, то выход;
...
конец;
{$ R * .res}
использования
SysUtils;
Const
Tmpl = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
SHA256_DIGEST_LENGTH = 32;
функционировать UnBase58 (S: PWideChar; Outter: Байт): Integer;
вар
I, J: целое число;
C: Extended;
Р: PWideChar;
начать
Результат: = 0;
FillChar (Outter, 0, 25);
для I: = 0 до Длина (S) делают
начать
P: = StrPos (PWideChar (Tmpl), PWideChar (S [I]));
если Р = нуль, то
Выход;
C: = Р - PWideChar (TMPL);
для J: = 25 0 Downto делать
начать
С: = С + 58 * Outter [Дж];
Outter [J]: = С по модулю 256;
С: = С / 256;
конец;
// если С, то выход;
конец;
Результат: = 1;
конец;
Функция Действительный (S: PWideChar): Целое число;
вар
д, d1, d2: массив [0..SHA256_DIGEST_LENGTH] из байт;
начать
если UnBase58 (S, D) = 0, то выход;
...
конец;