begin process at 2012 05 26 03:46:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

MX2004: CLASS

 > CLASS BASE64.AS

CLASS BASE64.AS


 Information sur la source

Note :
Aucune note
Catégorie :MX2004: CLASS Niveau :Débutant Date de création :20/05/2004 Date de mise à jour :13/07/2004 22:35:37 Vu :6 568

Auteur : BlackWizzard

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


 Description

j'avais besoin d'une class ou d'une fonction base64 en flash...
sur proto.layer51, j'ai trouvé un proto base64, mais mon projet etant en as2, j'ai du convertir en class.
je ne sais plus qui est l'auteur, mais vous trouverez son pseudo sur layer51.

Source

  • class base64 {
  • public var str:String;
  • function base64(opString:String) {
  • str = opString;
  • }
  • //
  • function set string(_str:String) {
  • str = _str;
  • }
  • //
  • function get string() {
  • return str;
  • }
  • //
  • function encode(opString:String):String {
  • opString != undefined ? str=opString : str=str;
  • var base64s:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  • var bits, dual, i:Number = 0, encOut = '';
  • while (str.length>=i+3) {
  • bits = (str.charCodeAt(i++) & 0xff) << 16 | (str.charCodeAt(i++) & 0xff) << 8 | str.charCodeAt(i++) & 0xff;
  • encOut += base64s.charAt((bits & 0x00fc0000) >> 18)+base64s.charAt((bits & 0x0003f000) >> 12)+base64s.charAt((bits & 0x00000fc0) >> 6)+base64s.charAt((bits & 0x0000003f));
  • }
  • if (str.length-i>0 && str.length-i<3) {
  • dual = Boolean(str.length-i-1);
  • bits = ((str.charCodeAt(i++) & 0xff) << 16) | (dual ? (str.charCodeAt(i) & 0xff) << 8 : 0);
  • encOut += base64s.charAt((bits & 0x00fc0000) >> 18)+base64s.charAt((bits & 0x0003f000) >> 12)+(dual ? base64s.charAt((bits & 0x00000fc0) >> 6) : '=')+'=';
  • }
  • return encOut;
  • }
  • //
  • function decode(opString:String):String {
  • opString != undefined ? str=opString : str=str;
  • var base64s:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  • var bits, decOut = '', i:Number = 0;
  • for (i=0; i<str.length; i += 4) {
  • bits = (base64s.indexOf(str.charAt(i)) & 0xff) << 18 | (base64s.indexOf(str.charAt(i+1)) & 0xff) << 12 | (base64s.indexOf(str.charAt(i+2)) & 0xff) << 6 | base64s.indexOf(str.charAt(i+3)) & 0xff;
  • decOut += String.fromCharCode((bits & 0xff0000) >> 16, (bits & 0xff00) >> 8, bits & 0xff);
  • }
  • if (str.charCodeAt(i-2) == 61) {
  • return decOut.substring(0, decOut.length-2);
  • } else if (str.charCodeAt(i-1) == 61) {
  • return decOut.substring(0, decOut.length-1);
  • } else {
  • return decOut.substring(0, decOut.length-2);
  • }
  • }
  • }
class base64 {
	public var str:String;
	function base64(opString:String) {
		str = opString;
	}
	//
	function set string(_str:String) {
		str = _str;
	}
	//
	function get string() {
		return str;
	}
	//
	function encode(opString:String):String {
		opString != undefined ? str=opString : str=str;
		var base64s:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
		var bits, dual, i:Number = 0, encOut = '';
		while (str.length>=i+3) {
			bits = (str.charCodeAt(i++) & 0xff) << 16 | (str.charCodeAt(i++) & 0xff) << 8 | str.charCodeAt(i++) & 0xff;
			encOut += base64s.charAt((bits & 0x00fc0000) >> 18)+base64s.charAt((bits & 0x0003f000) >> 12)+base64s.charAt((bits & 0x00000fc0) >> 6)+base64s.charAt((bits & 0x0000003f));
		}
		if (str.length-i>0 && str.length-i<3) {
			dual = Boolean(str.length-i-1);
			bits = ((str.charCodeAt(i++) & 0xff) << 16) | (dual ? (str.charCodeAt(i) & 0xff) << 8 : 0);
			encOut += base64s.charAt((bits & 0x00fc0000) >> 18)+base64s.charAt((bits & 0x0003f000) >> 12)+(dual ? base64s.charAt((bits & 0x00000fc0) >> 6) : '=')+'=';
		}
		return encOut;
	}
	//
	function decode(opString:String):String {
		opString != undefined ? str=opString : str=str;
		var base64s:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
		var bits, decOut = '', i:Number = 0;
		for (i=0; i<str.length; i += 4) {
			bits = (base64s.indexOf(str.charAt(i)) & 0xff) << 18 | (base64s.indexOf(str.charAt(i+1)) & 0xff) << 12 | (base64s.indexOf(str.charAt(i+2)) & 0xff) << 6 | base64s.indexOf(str.charAt(i+3)) & 0xff;
			decOut += String.fromCharCode((bits & 0xff0000) >> 16, (bits & 0xff00) >> 8, bits & 0xff);
		}
		if (str.charCodeAt(i-2) == 61) {
			return decOut.substring(0, decOut.length-2);
		} else if (str.charCodeAt(i-1) == 61) {
			return decOut.substring(0, decOut.length-1);
		} else {
			return decOut.substring(0, decOut.length-2);
		}
	}
}

 Conclusion

utilisation 1:
var str:String = "hello world";
var b64:base64 = new base64(str);
var encoded:String = b64.encode();


utilisation 2:
var str:String = "hello world";
var b64:base64 = new base64();
var encoded:String = b64.encode(str);



have fun!


 Historique

13 juillet 2004 22:35:37 :
cette source bouge vers MX2004:CLASS

 Sources du même auteur

Source avec Zip Source avec une capture SPORE-LIKE DEMO
Source avec Zip Source avec une capture LINECHART / AREACHART : COMPOSANT AS2, SOURCE XML, STYLE PAR...
Source avec Zip COURS FLASH: COMMUNICATION FLASH/PHP
Source avec Zip 3D TEMPS REEL EN AS2
Source avec Zip Source avec une capture CLASS PIECHART: CODE ET COURS (8 PAGES FLASHPAPER/WORD)

 Sources de la même categorie

Source avec Zip Source avec une capture LECTEUR MP3 AVEC LISTE DE LECTURE, STREAMING OU NON (COMPOSA... par eron
Source avec Zip ENREGISTRER DANS UN FICHIER TEXTE AVEC L'AIDE D'UN EXE par Mr_Qqn
Source avec Zip Source avec une capture CLASSE CALCULATOR par BananaTree
Source avec Zip Source avec une capture CLASS "PATERN" : PERMET LA CRÉATION DE REMPLISSAGE DE MOTIF ... par top30
Source avec Zip Source avec une capture MA CLASSE DE BASE SUR LES TEXTES ( STRINGS ) par snakeeater1

Commentaires et avis

Commentaire de top30 le 20/05/2004 11:59:38

Oui ca peut être utile...
Pourquoi as tu pas travaillé directement sur une extention de la Class String ? Quoique ca revienne au même....

8/10

Commentaire de BlackWizzard le 20/05/2004 12:34:20 administrateur CS

j'ai pensé a faire une extenstion de la class string.as mais comme je boss sur un projet modulaire qui doit etre distribué, une class a part, ct la meilleur solution...

Commentaire de Treedent le 10/12/2004 13:08:17

Je viens d'implémenter ta classe Base 64 et la fonction de décodage supprime les deux derniers caractères lorsque la chaine encodée contient deux points (..), comme c'est le cas ave une URL :

chaine de départ :
http://www.macromedia.fr

encodade base64 :
aHR0cDovL3d3dy5tYWNyb21lZGlhLmZy

décodage base64 :
http://www.macromedia.

As-tu déjà rencontré ce problème ?

Commentaire de remy2501 le 23/09/2009 21:23:19

A TOUT CEUX QUI LIRAIT CETTE SOURCE

Je croi avoir trouver un moyen pour régler le probleme des deux caractères de fin de chaine dont la venu est plus ou loin alléatoire:

il faut et il suffit de remplacer la ligne 44:
return decOut.substring(0, decOut.length-2);
par
return decOut.substring(0, decOut.length);

cela semble regler le problème pour moi, après reste a voir si cete bidouille tiendra la route

néanmoins, je crois qu'il s'agit tout bêtement d'une petite erreur de la par de l'auteur car quel intéret de faire une dijonction de cas si deux cas on strictement la même réponse

Commentaire de BlackWizzard le 24/09/2009 13:02:21 administrateur CS

Merci pour le bugfix :)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales