Re: Как закодировать?
- From
- Igor Zakhrebetkov ()
- To
- All
- Date
- 2002-10-07T20:13:28Z
- Area
- RU.ALGORITHMS
Andrew Ezhguroff wrote:
> А вот в СТАНДАРТНОМ (борландовские извращения меня не интересуют) Паскале
А в СТАНДАРТНОМ Паскале даже файл открыть нельзя - имен у файлов нет.
> битовых операций и сдвигов для целых нет. Так что придется делать через div
> и odd (или mod), да еще контролировать кол-во знаков (из-за "клонирования"
> знакового разряда). Либо через запись с вариантами, где одно поле - целое, а
> второе - множество.
А для примера (только не для флейма по поводу эффективности) еще одна процедура
почти на СТАНДАРТНОМ Паскале со старой запыленной дискеты :))
=============
procedure STRINT(var A: string;
N, { исходное число }
RADIX, { основание числа (1..16) }
L: INTEGER { треб. длина результир.строки }
);
{ преобразование целого числа N в символьную строку A }
{ в соответствии с заданным основанием от 2 до 16 и длиной L }
label 99;
const DIGIT:string[16]='0123456789ABCDEF';
var I, M: INTEGER; SIGN: BOOLEAN;
begin
if (RADIX<2) or (RADIX>16) then RADIX:=10;
SIGN:=(N<0);
if SIGN then N:=-N;
A[0]:=chr(L);
repeat
if L<1 then goto 99;
M:=N mod RADIX;
N:=N div RADIX;
a[L]:=DIGIT[M+1];
dec(L);
until N=0;
if SIGN and (L>0) then
begin
a[L]:='-';
L:=L-1;
end;
for I:=1 to L do a[I]:=' ';
99: end { STRINT };
=============
--
Игорь Захребетков
--- Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2a) Gecko/20020910
* Origin: Sweet Home (2:5024/11.0)