История изменений
Исправление 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;