AS3的BASE64编码与解码类

掌握Base64编码与解码的完整指南 本文还有配套的精品资源,点击获取 简介:Base64编码是一种将二进制数据转换为ASCII字符的技术,用于确保数据在网络传输时的完整性。它广泛应用于电子邮件、网页文档和某些协议中。Base64编码通过将每3个字节的数据转换为4个6位的字符,并对不足的数据进行补零处理,使用特定字符集进行编码。编码完成后,如果数据长度不是24位的倍数,会用"="进行填充。解码过程则是编码的逆过... 阅读详情

最近任务紧,工作忙,好久没来更新我的BLOG了。

今天在国外网站上淘到一个很好用的AS3的BASE64类

感觉写得简洁而强大。很好,赶快放上来。

调用代码:

import com . dynamicflash . utils . Base64 ;     

//编码和解码字符串      


var source : String = "Hello, world" ;      

var encoded : String = Base64 . encode ( source );      

trace
( encoded );      

     

var decoded : String = Base64 . decode ( encoded );      

trace
( decoded );      

   

//编码和解码ByteArray      

var obj : Object = { name : "Dynamic Flash" , url : "http://dynamicflash.com" };    

var source : ByteArray = new ByteArray ();    

source
. writeObject ( obj );    

   

var encoded : String = Base64 . encodeByteArray ( source );    

trace
( encoded );    

   

var decoded : ByteArray = Base64 . decodeToByteArray ( encoded );    

obj
= decoded . readObject ();    

trace
( obj . name + "(" + obj . url + ")" );  

 

-----------------------------------------------------------------------------------------------------------------
Base64类代码:

package com . dynamicflash . util {    

   

   
import flash . utils . ByteArray ;    

       

   
public class Base64 {    

           

       
private static const BASE64_CHARS : String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ;    

   

       
public static const version : String = "1.0.0" ;    

   

       
public static function encode ( data : String ): String {    

           
// Convert string to ByteArray    

           
var bytes : ByteArray = new ByteArray ();    

            bytes
. writeUTFBytes ( data );    

               

           
// Return encoded ByteArray    

           
return encodeByteArray ( bytes );    

       
}    

           

       
public static function encodeByteArray ( data : ByteArray ): String {    

           
// Initialise output    

           
var output : String = "" ;    

               

           
// Create data and output buffers    

           
var dataBuffer : Array ;    

           
var outputBuffer : Array = new Array ( 4 );    

               

           
// Rewind ByteArray    

            data
. position = 0 ;    

               

           
// while there are still bytes to be processed    

           
while ( data . bytesAvailable > 0 ) {    

               
// Create new data buffer and populate next 3 bytes from data    

                dataBuffer
= new Array ();    

               
for ( var i : uint = 0 ; i < 3 && data . bytesAvailable > 0 ; i ++) {    

                    dataBuffer
[ i ] = data . readUnsignedByte ();    

               
}    

                   

               
// Convert to data buffer Base64 character positions and    

               
// store in output buffer    

                outputBuffer
[ 0 ] = ( dataBuffer [ 0 ] & 0xfc ) >> 2 ;    

                outputBuffer
[ 1 ] = (( dataBuffer [ 0 ] & 0x03 ) << 4 ) | (( dataBuffer [ 1 ]) >> 4 );    

                outputBuffer
[ 2 ] = (( dataBuffer [ 1 ] & 0x0f ) << 2 ) | (( dataBuffer [ 2 ]) >> 6 );    

                outputBuffer
[ 3 ] = dataBuffer [ 2 ] & 0x3f ;    

                   

               
// If data buffer was short (i.e not 3 characters) then set    

               
// end character indexes in data buffer to index of '=' symbol.    

               
// This is necessary because Base64 data is always a multiple of    

               
// 4 bytes and is basses with '=' symbols.    

               
for ( var j : uint = dataBuffer . length ; j < 3 ; j ++) {    

                    outputBuffer
[ j + 1 ] = 64 ;    

               
}    

                   

               
// Loop through output buffer and add Base64 characters to    

               
// encoded data string for each character.    

               
for ( var k : uint = 0 ; k < outputBuffer . length ; k ++) {    

                    output
+= BASE64_CHARS . charAt ( outputBuffer [ k ]);    

               
}    

           
}    

               

           
// Return encoded data    

           
return output ;    

       
}    

           

       
public static function decode ( data : String ): String {    

           
// Decode data to ByteArray    

           
var bytes : ByteArray = decodeToByteArray ( data );    

               

           
// Convert to string and return    

           
return bytes . readUTFBytes ( bytes . length );    

       
}    

           

       
public static function decodeToByteArray ( data : String ): ByteArray {    

           
// Initialise output ByteArray for decoded data    

           
var output : ByteArray = new ByteArray ();    

               

           
// Create data and output buffers    

           
var dataBuffer : Array = new Array ( 4 );    

           
var outputBuffer : Array = new Array ( 3 );    

   

           
// While there are data bytes left to be processed    

           
for ( var i : uint = 0 ; i < data . length ; i += 4 ) {    

               
// Populate data buffer with position of Base64 characters for    

               
// next 4 bytes from encoded data    

               
for ( var j : uint = 0 ; j < 4 && i + j < data . length ; j ++) {    

                    dataBuffer
[ j ] = BASE64_CHARS . indexOf ( data . charAt ( i + j ));    

               
}    

                   

               
// Decode data buffer back into bytes    

                outputBuffer
[ 0 ] = ( dataBuffer [ 0 ] << 2 ) + (( dataBuffer [ 1 ] & 0x30 ) >> 4 );    

                outputBuffer
[ 1 ] = (( dataBuffer [ 1 ] & 0x0f ) << 4 ) + (( dataBuffer [ 2 ] & 0x3c ) >> 2 );            

                outputBuffer
[ 2 ] = (( dataBuffer [ 2 ] & 0x03 ) << 6 ) + dataBuffer [ 3 ];    

                   

               
// Add all non-padded bytes in output buffer to decoded data    

               
for ( var k : uint = 0 ; k < outputBuffer . length ; k ++) {    

                   
if ( dataBuffer [ k + 1 ] == 64 ) break ;    

                    output
. writeByte ( outputBuffer [ k ]);    

               
}    

           
}    

               

           
// Rewind decoded data ByteArray    

            output
. position = 0 ;    

               

           
// Return decoded data    

           
return output ;    

       
}    

           

       
public function Base64 () {    

           
throw new Error ( "Base64 class is static container only" );    

       
}    

   
}    

}  

 

 

下载类文件

C#中基于Base64的编码与解码实现 本文还有配套的精品资源,点击获取 简介:Base64是一种常用编码方式,用于在只支持ASCII字符的协议中传输二进制数据。C#提供了 System.Convert 类来实现Base64编码和解码。本教程将指导你如何在C#中操作字符串和字节流进行Base64的加解密,包括编码转换、异常处理、自定义编码、内存效率、异步编程和性能优化等方面。通过理解和应用这些关键知... 阅读详情

相关推荐

PHP实现Base64编码解码类的详细教程

在自定义Base64编解码类时,我们需要首先定义类的基本结构,包括它的属性和方法。以下是一个简化版的Base64类的结构设计:// 将输入数据编码成Base64字符串// 将Base64字符串解码回原始数据// 内部使用的方法,处理数据分组的编码// 内部使用的方法,处理数据分组的解码// 更多辅助方法可以在这里定义,例如错误处理等。

weixin_33597080的博客 1431

基于 flash AS3.0 的BASE64编码与解码类

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://programmer.blogbus.com/logs/36436446.html 在国外网站上淘到一个很好用的AS3的BASE64类感觉写得简洁而强大。很好,赶快放上来。 调用代码: 01 import com.dynamicflash.utils.Base64;      02 //编码和

Manketon的专栏 2449

掌握Java中Base64编码与解码的实现

Base64是一种基于64个可打印字符来表示二进制数据的编码方法。它将每3个字节的二进制数据编码成4个可打印的ASCII字符。Base64编码的起源通常与电子邮件传输中的MIME标准相关联,该标准要求所有邮件内容都必须为文本格式。因此,Base64编码提供了一种方式,可以将任何二进制数据转换为有效的文本内容,从而能够顺利通过那些只支持文本数据的网络传输层。Java 8在包中引入了新的Base64 API,旨在替代旧的第三方库和Java内置的不完善的Base64类。

weixin_42513209的博客 1545

Flex/AS3 base64指定字符编码

public static function base64Encode(str:String, charset:String = "GBK"):String{ if(StringUtils.getInstance().isEmpty(str)){ return ""; } var base64:Base64Encoder = new Base64Encoder();

布丰的专栏 3067

AS3 二维码生成及解码工具

一直在关注flex使用二维码的工具类,这款是用ZXing库设计的

Android BASE64Encoder不能用的问题-附件资源

Android BASE64Encoder不能用的问题-附件资源

AS3 Base64

//============================================================================ // Base64 // 通用的base64转byteArray; //============================================================================ intern

Jave.Lin 的学习笔记 1336

百元DIY手机荧光计:低成本荧光检测平台搭建与实战

荧光检测是一种基于物质受特定波长光激发后发射更长波长荧光的分析技术,其核心原理在于光与物质的相互作用。通过选择性激发与检测,该技术能实现对痕量物质的高灵敏度、高特异性定量分析,在生物医学、环境监测和食品安全等领域具有重要价值。传统荧光分光光度计虽精度高,但成本昂贵、体积庞大且操作复杂,限制了其在现场快检和普及教育中的应用。本文聚焦于如何利用智能手机的高性能摄像头和处理器,结合低成本光学滤光片和LED光源,构建一个便携、经济的DIY荧光检测平台。该方案通过简化光路设计,采用带通滤光片进行波长选择,并利用图像处

weixin_34194829的博客 308

Base64编码、解码的基本方法,及byteArray = base64.toByteArray();抛出A partial block (2 of 4 bytes) was dropped. Dec

AS3中Base64的编码和解码都很方便,例如对经过Base64编码后的字符串b64Str,可以用如下方法进行解码: [java] view plaincopy private function decodeBin(b64Str:String):Array   {       var base64:Base64Decoder;       

lihushiwoa的专栏 2693

APO的全面进化之路(2):走向IBP、建设端到端供应链计划体系

前一篇记录阐述了在供应链计划(Supply Chain Planning)领域里SAP的关键产品APO的不断进化之路,即部分产品从APO进化到S/4HANA,本篇将继续阐述进化之路上的另一大中坚产品力量SAP-IBP(Integrated Business Planning)。作为SAP数字化供应链(Digital Supply Chain)中供应链计划SCP的左膀右臂,S/4HANA与IBP共同完善了计划域的完整闭环。本篇作为收尾,在先谈对IBP产品的个人认知之前,特别是在当今这个IT产品迭代多、技术革新

ChampaignWolf的专栏 5233

Cadence Virtuoso实战:用gm/Id方法搞定折叠式共源共栅放大器设计(附完整仿真流程)

本文详细介绍了在Cadence Virtuoso设计环境中,运用gm/Id方法高效设计折叠式共源共栅放大器的完整实战流程。该方法通过工艺特征曲线,将设计指标映射到晶体管尺寸与偏置,有效克服深亚微米工艺下传统方法的不足。文章以TSMC 180nm工艺为例,从指标拆解、参数查找、电路搭建、仿真验证到问题调试,提供了清晰、可复现的操作指南,并探讨了自动化脚本与版图考量,助力工程师和学生提升模拟IC设计效率与成功率。

jwt8token的博客 648

基于flash AS3.0 的BASE64编码与解码类

代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gt;//调用代码: import com.dynamicflash.utils.Base64; //编码和解码字符串 var source:Stri...

优秀技术文章收录 383

基于强化学习框架的交易策略学习过程

每个状态s∈S 是一个由六个微观结构特征构成的向量,这些特征反映了当前市场的订单簿状态和近期交易行为。

xu624735206的博客 1112

as 传输游戏数据

AS3]利用ByteArray压缩游戏关卡数据 ByteArray 类提供用于优化读取、写入以及处理二进制数据的方法和属性。其中可以利用compress方法来压缩程序中过长的字符串,非常有效,特别是用在可以设计关卡生成代码的小游戏中,这里要用到subhero写的一个Base64类,方法如下: 压缩: public static function Compress(value:String...

nuthell 240

【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)

参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed

beidou111的博客 1533

ESP32-C3模组上跑通OTA升级(3)

ESP32-C3模组上跑通OTA升级(3)

phmatthaus的专栏 1353

base64编码解码

base64编码解码

火红色祥云 4万+

19、CATIA V5:参数化建模与零件目录创建全解析

本文详细解析了在CATIA V5中通过设计表实现参数化建模及零件目录创建的完整流程。以支撑块和钩形夹为例,介绍了参数识别、设计表创建与关联、配置管理以及零件目录的构建方法。同时,提供了实际操作建议和注意事项,帮助设计师高效创建和管理零件族,提升设计效率和质量。

raspberrypi5的博客 449

Python中Base64编码与解码

Base64简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符(包括a-z、A-Z、0-9、/、+)来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识...

pengjunlee的博客 8万+

QT5.12.1报错:1. clang++:error: :fatal error andriod Input/output error

QT5.12.1报错:1. clang++:error: :fatal error andriod Input/output error 解决方式: 1.qt程序不要放在共享目录下编译,直接拷贝到ubuntu系统中编译 2.修改/home/xt/Qt5.12.1/5.12.1/android_armv7/mkspecs/android-clang中 #QMAKE_LINK = QMAKECXXQMAKE_CXX QMAKEC​XXQMAKE_CFLAGS -Wl,–exclude-libs,libgc

xt18971492243的博客 738

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

js实现基于Base64的编码及解码

ddd

xiaoxu的博客 8万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C++实现BASE64编码及解码

/[密文]第4字节的345678位组成明文第3字节的低6位,[密文]第3字节的78位组成明文第3字节的高2位.//[密文]第3字节的3456位组成明文第2字节的低4位,[密文]第2字节的5678位组成明文第2字节的高4位.//[密文]第2字节的34位组成明文第1字节的低2位,[密文]第1字节的345678位组成明文第1字节的高6位.//[密文]1~4字节中仅后6位是需要的字节位,共24位(即转换后的3字节);//对明文进行编码,每3字节明文转换成4字节编码文本,不足3字节的部分补充“填充符”.

download3564124的博客 2289

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java base64编码和解码

Base64 编码会将字符串编码得到一个含有 A-Za-z0-9+/ 的字符串。base64 编码和解码网上有些地方称为 base64 加密和解密,这是不准确的。base64 是不能用来加密和解密的,它只是一种编码解码方式,不能用于加密和解密,如果你想加密和解密可以选择如 AES、RSA 等加密算法。

西凉的悲伤博客 2万+

【密码学】BASE64编码与解码

在计算机的世界里,二进制是母语,但人类更擅长读写文本。BASE64像一位翻译官,让二进制数据穿上ASCII的外衣,穿越HTTP协议、躲过邮件系统的审查,甚至藏在网页的角落里——它是数字世界的‘隐形斗篷’。

墨名棋妙的博客 3709
上一篇: ByteBuffer 转化为 String
下一篇: java 集合类Array、List、Map区别和联系
blacksource
博客等级 码龄21年 66粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值