AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Base64 case insensitive

Ein Thema von shmia · begonnen am 5. Jul 2010 · letzter Beitrag vom 5. Jul 2010
Antwort Antwort
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

AW: Base64 case insensitive

  Alt 5. Jul 2010, 18:00
Bei "guten" Funktionen/Klassen, welche nach Base64 umkodieren, kann man den Zeichensatz angeben.
"Meine" Base64 hält sich an den RFC-Standard.
Dass ich den Vorrats von 64 (+1 für Endekennung) Zeichen umdefinieren kann ist klar.
Bei Decodieren muss dies natürlich wieder rückgängig gemacht werden.

Mir geht es darum zu fragen ob sich schon mal jemand die Mühe gemacht hat, die Kleinbuchstaben durch andere Zeichen zu ersetzen.

Bin jetzt gerade fündig geworden:
Code:
 /**
  * This array is a lookup table that translates 6-bit positive integer
  * index values into their "Base64 Alphabet" equivalents as specified
  * in Table 1 of RFC 2045.
  */
  private static final char intToBase64[] = {
     'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
     'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
     'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
     'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
  };
 
  /**
   * This array is a lookup table that translates 6-bit positive integer
   * index values into their "Alternate Base64 Alphabet" equivalents.
   * This is NOT the real Base64 Alphabet as per in Table 1 of RFC 2045.
   * This alternate alphabet does not use the capital letters. It is
   * designed for use in environments where "case folding" occurs.
   */
   private static final char intToAltBase64[] = {
      '!', '"', '#', '$', '%', '&', '\'', '(', ')', ',', '-', '.', ':',
      ';', '<', '>', '@', '[', ']', '^', '`', '_', '{', '|', '}', '~',
      'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
      'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '?'
   };

Warum nicht gleich Base16 aka Hexadezimal
Base16, Base32 & Base36 brauchen mir zu viel Platz.
Andreas

Geändert von shmia ( 5. Jul 2010 um 18:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.384 Beiträge
 
Delphi 12 Athens
 
#2

AW: Base64 case insensitive

  Alt 5. Jul 2010, 18:05
Warum geht denn die Groß/Kleinschreibung verloren?

Grundsätzlich hast du etwa 96 Zeichen in ASCII und 223 in ANSI zur Verfügung, wobei es bei ANSI auch wieder einige Zeichen mit Groß/Kleinschreibung gibt und sich dieses auch noch je nach Codepage ändern kann.

96 - 26 (Groß- oder Kleinbuchstaben) = 70, was wohl ausreichen sollte, so daß du dich nur noch entscheiden mußt, welche 6 Zeichen du nicht magst.


[add]
hier eine Auswahl:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~
!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
mußt nur noch 4 Zeichen rauslöschen und schon hast du deinen Zeichensatz.

[add]
Zitat:
brauchen mir zu viel Platz.
hab noch irgendwo eine Base128 ^^
und eine Base256 wäre auch ganz schnell gebaut (CopyMemory ), aber diese hätte dann wieder dein Groß-/Kleinschreibungsproblemchen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Jul 2010 um 18:13 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz