Conversione in Base64

Da Gambas-it.org - Wikipedia.
Versione del 25 apr 2013 alle 05:56 di Vuott (Discussione | contributi) (Creata pagina con 'La conversione in ''Base64'' traduce i dati binari di una stringa ASCII (caratteri non accentati) nella rappresentazione di un dato di 6 bit utilizzando 64 caratteri stampabil...')

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

La conversione in Base64 traduce i dati binari di una stringa ASCII (caratteri non accentati) nella rappresentazione di un dato di 6 bit utilizzando 64 caratteri stampabili.


La codifica Base64 è utilizzata quando vi è la necessità di codificare dati binari che devono essere memorizzati e trasferiti su supporti che sono progettati per gestire dati testuali. In particolare, la codifica Base64 è utilizzata negli scambi testuali nella posta elettronica.


Utilizzo delle funzioni specifiche di Gambas

Dalla versione 3.2 di Gambas, per ottenere la codifica di una stringa in Base64 è possibile utilizzare la specifica funzione Base64():

Base64Stringa = Base64("Stringa")


Algoritmo alternativo

E' possibile, ovviamente, ottenere la conversione in Base64 anche con uno specifico algoritmo. Ad esempio uno simile a questo, di cui mostriamo la sua parte essenziale:

Public Sub Button1_Click()

 Dim s, binario, $fin As String
 Dim j, bfin As Integer
 Dim b As Byte
   
' Riceve l'intera stringa in codifica "binaria" da convertire:
   s = TextBox1.Text
   
   For j = 1 To Len(s)
     binario = binario & Bin(Asc(Mid(s, j, 1)), 8)
   Next

' Effettua la conversione:
   For j = 1 To Len(binario) Step 6
     s = Mid(binario, j, 6)
     bfin = convert(s)

     Select Case bfin
       Case 0 To 25
         $fin &= Chr(bfin + 65)
       Case 26 To 51
         $fin &= Chr(bfin + 71)
       Case 52 To 61
         $fin &= Chr(bfin - 4)
       Case 62
         $fin &= Chr(bfin + 19)
       Case 63
         $fin &= Chr(bfin + 16)
     End Select
   Next
   
' Mostra il risultato:
   If Len($fin) < 4 Then Print $fin & String$(4 - Len($fin), "=")

   If Len($fin) Mod 4 > 0 Then
     b = 4 * (Fix(Len($fin) / 4) + 1)
     Print $fin & String$(b - Len($fin), "=")
   Endif

   If Len($fin) Mod 4 = 0 Then Print $fin
   
End