Einzelnen Beitrag anzeigen

Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: unicodefähiges Base32Decode

  Alt 3. Feb 2010, 14:39
Fehler in Encoder gefunden! Das ShiftLinks mit der Multiplikation war verkehrt herum:

Aus
nr := nr * 256 + ord(source[i]); muss
nr := nr * 256 + ord(source[5+1-i]); gemacht werden.
Dito mit der 2. Berechnung darunter.

Delphi-Quellcode:
function Base32Encode(source: String): String;
const
  alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
var
  i: Integer;
  nr: Int64;
begin
  result := '';
  while length(source) >= 5 do
  begin
    nr := 0;
    for i := 1 to 5 do
      nr := nr * 256 + ord(source[5+1-i]);
    for i := 1 to 8 do
    begin
      result := result + alphabet[(nr mod 32) + 1];
      nr := nr div 32;
    end;
    delete(source, 1, 5);
  end;
  nr := 0;
  if length(source) > 0 then
  begin
    for i := 1 to length(source) do
      nr := nr * 256 + ord(source[Length(source)+1-i]);
    for i := 1 to 8 do
    begin
      if nr > 0 then
      begin
        result := result + alphabet[(nr mod 32) + 1];
        nr := nr div 32;
      end
      else
        result := result + '=';
    end;
  end;
end;
So stimmts dann auch mit dem anderen Code überein und geht unter D2009+.
Stefan
  Mit Zitat antworten Zitat