Base64EncoderBuffer()

Syntaxe

Resultat = Base64EncoderBuffer(*TamponSource, LongueurSource, *TamponDestination, LongueurDestination [, Options])
Description
Encode le contenu d'un tampon avec l'algorithme Base64.

Arguments

*TamponSource Le tampon contenant les données à coder.
LongueurSource La taille de la mémoire tampon d'entrée.
*TamponDestination Le tampon de sortie où les données codées seront copiées.
LongueurDestination La taille de la mémoire tampon de sortie.
La mémoire tampon de sortie peut être jusqu'à 33% plus petite que le tampon d'entrée, avec une taille minimale de 64 octets.
Il est recommandé de faire un tampon légèrement plus grand, par exemple 30%, pour éviter les débordements.
Options (optionnel) Peut être une combinaison de:
  #PB_Cipher_NoPadding: Il ne sera pas plus insérer de '=' à la fin de la mémoire tampon.
  #PB_Cipher_URL      : Utilisation d'un codage légèrement différent, principalement utilisé 
                         dans les URLs. Les caractères '+' et '/' seront respectivement codés 
                         en '-' et '_'.

Valeur de retour

Renvoie la longueur des données codées en octets.

Remarques

Il est largement utilisé dans les programmes de messagerie mais peut également être utile dans toute application nécessitant un encodage basé sur le code ASCII seul (7 bits, caractères 32 à 127) pour les fichiers binaires.

Exemple

  Exemple$ = "Ceci est une chaîne !" 
  Decoded$ = Space(1024) 
  Encoded$ = Space(1024) 
    
  Debug Base64EncoderBuffer(@Exemple$, StringByteLength(Exemple$), @Encoded$, StringByteLength(Encoded$))
  Debug Encoded$ 
    
  Debug Base64DecoderBuffer(@Encoded$, StringByteLength(Encoded$), @Decoded$, StringByteLength(Decoded$))
  Debug Decoded$

Exemple: Encodage & Décodage d'une DataSection

  DataSection
    TestDebut:
    Data.a $00, $01, $02, $03, $04, $05, $06, $07
    Data.a $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
    TestFin:
  EndDataSection
  
  Taille = (?TestFin - ?TestDebut) * 1.35
  If Taille < 64
  Taille = 64
  EndIf
  
  *EncodeBuffer = AllocateMemory(Taille)
  Taille = Base64EncoderBuffer(?TestDebut, ?TestFin - ?TestDebut, *EncodeBuffer, MemorySize(*EncodeBuffer))
  ChaineEncodee$ = PeekS(*EncodeBuffer, Taille, #PB_Ascii)
  Debug ChaineEncodee$
  
  *DecodeBuffer = AllocateMemory(Taille)
  Taille = PokeS(*EncodeBuffer, ChaineEncodee$, StringByteLength(ChaineEncodee$, #PB_Ascii), #PB_Ascii|#PB_String_NoZero)
  Taille = Base64DecoderBuffer(*EncodeBuffer, Taille, *DecodeBuffer, MemorySize(*DecodeBuffer))
  ShowMemoryViewer(*DecodeBuffer, Taille)

Voir aussi

Base64DecoderBuffer()

OS Supportés

Tous

<- Base64Encoder() - Cipher Index - CloseCryptRandom() ->