LINUX.ORG.RU

История изменений

Исправление bormant, (текущая версия) :

Если res*10+нечто, то нечто 0..9 ;)
А для res:=res*base+нечто, нечто 0..base-1
Как кодировать то, что выше 9, зависит от принятых соглашений, обычно a..z регистронезависимо - 0..35; A..Z, a..z регистрозависимо - 0..61, ну и до 63 обычно бывает нужно (см. BASE64).
Регистронезависимый вариант соответственно:
res:=res*base+Ord(UpCase(c))-Ord('A')+10;
Регистрозависимый целиком:

case c of
'0'..'9': res:=res*base+Ord(c)-Ord('0');
'A'..'Z': res:=res*base+Ord(c)-Ord('A')+10;
'a'..'z': res:=res*base+Ord(c)-Ord('a')+36;
end;


PS. В BASE64 MIME «циферки» другие: A-0,a-26,0-52, +-62, /-63.

Исправление bormant, :

Если res*10+нечто, то нечто 0..9 ;)
А для res:=res*base+нечто, нечто 0..base-1
Как кодировать то, что выше 9, зависит от принятых соглашений, обычно a..z регистронезависимо - 0..35; A..Z, a..z регистрозависимо - 0..61, ну и до 63 обычно бывает нужно (см. BASE64).
Регистронезависимый вариант соответственно:
res:=res*base+Ord(UpCase(c))-Ord('A')+10;
Регистрозависимый целиком:

case c of
'0'..'9': res:=res*base+Ord(c)-Ord('0');
'A'..'Z': res:=res*base+Ord(c)-Ord('A')+10;
'a'..'z': res:=res*base+Ord(c)-Ord('a')+36;
end;

Исправление bormant, :

Если res*10+нечто, то нечто 0..9 ;)
А для res:=res*base+нечто, нечто 0..base-1
Как кодировать то, что выше 9, зависит от принятых соглашений, обычно a..z регистронезависимо - 0..35; A..Z, a..z регистрозависимо - 0..61, ну и до 63 обычно бывает нужно (см. BASE64).
Регистронезависимый вариант соответственно:
res:=res*base+Ord(UpCase(c))-Ord('A')+10;

Исходная версия bormant, :

Если res*10+нечто, то нечто 0..9 ;)
А для res:=res*base+нечто, нечто 0..base-1
Как кодировать то, что выше 9, от зависит принятых соглашений, обычно a..z регистронезависимо - 0..35; A..Z, a..z регистрозависимо - 0..61, ну и до 63 обычно бывает нужно (см. BASE64).
Регистронезависимый вариант соответственно:
res:=res*base+Ord(UpCase(c))-Ord('A')+10;