Sviluppo4d.it
Sito indipendente di informazioni tecniche per sviluppatori 4th Dimension italiani  

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga: Prev Next

Titolo: Convertire da Testo Ascii in Base64

Categoria: Codice Ultimo Aggiornamento: 27/06/04


Da un messaggio inviato da Pete Bozek al 4D Nug internazionale, fa la codifica in Base64 di un testo passato come blob. Gli altri due parametri opzionali indicano se inserire un salto riga e che tipo di carattere usato (il default è il Return).

      ` Encode_Base64_Blob
      ` di Peter Bozek
      ` http://www.inforce.sk

C_POINTER($1;$pPassedBlob)
C_BOOLEAN($2;$bInsertLineBr)
C_STRING(2;$3;$sEOL)
C_LONGINT($iPos;$iDest;$iWritten;$iWhere)
C_LONGINT($lBlobSize;$lNewSize;$lEOLLength)
C_BLOB($oTempBlob)
C_STRING(64;$encoding)

$pPassedBlob:=$1
$lBlobSize:=BLOB size($pPassedBlob->)
If ($lBlobSize>0)
        `carica i parametri
      If (Count parameters>1)
          $bInsertLineBr:=$2
      Else
          $bInsertLineBr:=True
      End if
      $lEOLLength:=0
      If ($bInsertLineBr)
          If (Count parameters>2)
            $sEOL:=$3
          End if
          If ($sEOL="")
            $sEOL:=Char(Carriage return )
          End if
          $lEOLLength:=Length($sEOL)
      End if

          `prepara i data
      COPY BLOB($pPassedBlob->;$oTempBlob;0;0;$lBlobSize)
      SET BLOB SIZE($oTempBlob;(($lBlobSize+2)\3)*3;0x0000)
      SET BLOB SIZE($pPassedBlob->;0)
      $lNewSize:=(($lBlobSize+2)\3)*4
      If ($bInsertLineBr)
          $lNewSize:=$lNewSize+(($lNewSize+75)\76)*$lEOLLength
      End if
      SET BLOB SIZE($pPassedBlob->;$lNewSize;0x0000)
      $encoding:="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
      $encoding:=$encoding+"abcdefghijklmnopqrstuvwxyz0123456789+/"
      $iPos:=0
      $iDest:=0
      If ($bInsertLineBr)  `start with NL
          TEXT TO BLOB($sEOL;$pPassedBlob->;Text without length ;$iDest)
            `$iDest:=$iDest+$lEOLLength
      End if
      While ($iPos<$lBlobSize)
          $iWhere:=($oTempBlob{$iPos} >> 2)
          $pPassedBlob->{$iDest}:=Ascii($encoding[[$iWhere+1]])
          $iDest:=$iDest+1
          $iWhere:=(($oTempBlob{$iPos} << 4) & 0x0030) | ($oTempBlob{$iPos+1} >> 4)
          $pPassedBlob->{$iDest}:=Ascii($encoding[[$iWhere+1]])
          $iDest:=$iDest+1
          $iWhere:=(($oTempBlob{$iPos+1} << 2) & 0x003C) | (($oTempBlob{$iPos+2} >> 6) 0x0003)
          $pPassedBlob->{$iDest}:=Ascii($encoding[[$iWhere+1]])
          $iDest:=$iDest+1
          $iWhere:=$oTempBlob{$iPos+2} & 0x003F
          $pPassedBlob->{$iDest}:=Ascii($encoding[[$iWhere+1]])
          $iDest:=$iDest+1
          $iPos:=$iPos+3
          $iWritten:=$iWritten+4
          Case of
            : ($iPos=($lBlobSize+1))
              $pPassedBlob->{$iDest-1}:=Ascii("=")
            : ($iPos=($lBlobSize+2))
              $pPassedBlob->{$iDest-1}:=Ascii("=")
              $pPassedBlob->{$iDest-2}:=Ascii("=")
          End case
          If ($bInsertLineBr & ($iWritten%76=0))
            TEXT TO BLOB($sEOL;$pPassedBlob->;Text without length ;$iDest)
              `$iDest:=$iDest+$lEOLLength
          End if
      End while
End if


Inviato da: Umberto Migliore Visite: 8486

Se accedi con utente e password, puoi aggiungere dei commenti.


Accesso

User: Nuovo
Pass: Accedi

Utenti Registrati

Cerca

Se non trovi le informazioni che cerchi scrivi a aiuto@sviluppo4d.it

4D Principali

4D Discussioni

Faq random


Crediti

Dominio registrato da ZetaNet
Sito realizzato da Nexus srl
4D SQL 11.9.0 offerto da 4D & Italsoftware
Icone di FAMFAMFAM
Moderato da Umberto Migliore
264 utenti registrati

Pagina servita il 28/06/17 alle 00:27:35 Valid HTML 4.01! Valid CSS!

Mutuo Facile, Serie Filmcards, Serie Singloids e altre app di Nexus srl per iPhone e iPad

Cidroid, distributore italiano lettori barcode per Apple iPhone, iPod, iPad della IPC