Советы по Delphi. Версия 1.0.6
Шрифт:
if c > 9 then Inc(c, $37)
else Inc(c, $30);
Response[i + 1]:= char(c);
end;{for}
end;
procedure HexStrToBytes(hHexStr: String; pbyteArray: Pointer);
{pbyteArray указывает на область памяти, хранящей результаты}
var
i, j: WORD;
tempPtr: PChar;
twoDigits: String[2];
begin
tempPtr:= pbyteArray;
j:= 1;
for i:= 1 to (Length(hHexStr) DIV 2) do begin
twoDigits:= Copy(hHexStr, j, 2); Inc(j, 2);
PByte(tempPtr)^:= StrToInt('$' + twoDigits); Inc(tempPtr);
end;{for}
end;
end.
UNIT string16.
interface
{$IFNDEF Win32}
procedure SetLength(var S: string; Len: Integer);
procedure SetString(var Dst: string; Src: PChar; Len: Integer);
{$ENDIF}
implementation
{$IFNDEF Win32}
procedure SetLength(var S: string; Len: Integer);
begin
if len > 255 then S[0]:= Chr(255)
else S[0]:= Chr(Len)
end;
procedure SetString(var Dst: string; Src: PChar; Len: Integer);
begin
if Len > 255 then Move(Src^, Dst[1], 255)
else Move(Src^, Dst[1], Len);
SetLength(Dst, Len);
end;
{$ENDIF}
end.
Преобразование
Может ли кто-нибудь дать мне идею простого преобразования двоичного кода (base2) в десятичный (base10)?
Решение 1
/////////////////////////////////////////////////////////////////////////
// преобразование 32-битного base2 в 32-битный base10 //
// максимальное число = 99 999 999, возвращает –1 при большем значении //
/////////////////////////////////////////////////////////////////////////
function base10(base2:integer) : integer; assembler;
asm
cmp eax,100000000 //
проверка максимального значения
jb @1 // значение в пределах допустимого
mov eax,-1 // флаг ошибки
jmp @exit // выход если –1
@1:
push ebx // сохранение регистров
push esi
xor esi,esi // результат = 0
mov ebx,10 // вычисление десятичного логарифма
mov ecx,8 // преобразование по формуле 10^8-1
@2:
mov edx,0 // удаление разницы
div ebx // eax – целочисленное деление на 10, edx – остаток от деления на 10
add esi,edx // результат = результат + разность[I]
ror esi,4 // перемещение разряда
loop @2 // цикл для всех 8 разрядов
mov eax,esi // результат функции
pop esi // восстанавление регистров
pop ebx
@exit:
end;
Решение 2
function IntToBin(Value: Longint; Size: Integer): String;
var
i: Integer;
begin
Result :='';
for i:= Size downto 0 do begin
if value and (1 shl i)<>0 then begin
Result:= Result+'1';
end else begin
Result:= Result+'0';
end;
end;
end;
Function BinToInt(Value: String): Longint;
var
i,Size: Integer;
begin
Result:= 0;
Size:= Length(Value);
for i:=Size downto 0 do begin
if copy(value,i,1) = '1' then begin
Result:= Result + (1 shl i);
end;
end;
end;
Решение 3
Следующая функция получает в качестве параметра Base (1..16) любую десятичную величину и возвращает результат в виде строки, содержащей точное значение BaseX. Вы можете использовать данный алгоритм для преобразования арабских чисел в римские (смотри ниже).
Поделиться:
Популярные книги
Мастер...
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Жених из гроба
1. Гробокопательница
Фантастика:
юмористическое фэнтези
сказочная фантастика
фэнтези
5.00
рейтинг книги
Ищу жену с прицепом
2. Спасатели
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Гримуар тёмного лорда I
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Заклятие предков
3. Ведун
Фантастика:
фэнтези
альтернативная история
8.49
рейтинг книги
Крепость над бездной
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Рота Его Величества
Новые герои
Фантастика:
боевая фантастика
8.55
рейтинг книги
Экспансия: Сотрудничество. Том 5
5. Планетарный десант
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Отверженный III: Вызов
3. Отверженный
Фантастика:
фэнтези
альтернативная история
7.73
рейтинг книги
Князь Серединного мира
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Возвышение Меркурия. Книга 8
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Эволюционер из трущоб. Том 5
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Локки 7. Потомок бога
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 4
4. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00