基于 flash AS3.0 的BASE64编码与解码类
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://programmer.blogbus.com/logs/36436446.html
在国外网站上淘到一个很好用的AS3的BASE64类感觉写得简洁而强大。很好,赶快放上来。
调用代码:
02 //编码和解码字符串
03 var source:String = "Hello, world";
04 var encoded:String = Base64.encode(source);
05 trace(encoded);
06 var decoded:String = Base64.decode(encoded);
07 trace(decoded);
08 //编码和解码ByteArray
09 var obj:Object= {name:"Dynamic Flash",url:"http://dynamicflash.com"};
10 var source:ByteArray = new ByteArray();
11 source.writeObject(obj);
12 var encoded:String = Base64.encodeByteArray(source);
13 trace(encoded);
14 var decoded:ByteArray = Base64.decodeToByteArray(encoded);
15 obj = decoded.readObject();
16 trace(obj.name + "(" + obj.url + ")");
Base64类代码:
2. import flash.utils.ByteArray;
3. public class Base64 {
4. private static const BASE64_CHARS:String ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
5. public static const version:String = "1.0.0";
6. public static function encode(data:String):String {
7. // Convert string to ByteArray
8. var bytes:ByteArray = new ByteArray();
9. bytes.writeUTFBytes(data);
10. // Return encoded ByteArray
11. return encodeByteArray(bytes);
12. }
13. public static function encodeByteArray(data:ByteArray):String {
14. // Initialise output
15. var output:String = "";
16. // Create data and output buffers
17. var dataBuffer:Array;
18. var outputBuffer:Array = new Array(4);
19. // Rewind ByteArray
20. data.position = 0;
21. // while there are still bytes to be processed
22. while (data.bytesAvailable > 0) {
23. // Create new data buffer and populate next 3 bytes from data
24. dataBuffer = new Array();
25. for (var i:uint = 0; i < 3 && data.bytesAvailable > 0; i++) {
26. dataBuffer[i] = data.readUnsignedByte();
27. }
28. // Convert to data buffer Base64 character positions and
29. // store in output buffer
30. outputBuffer[0] = (dataBuffer[0] & 0xfc) >> 2;
31. outputBuffer[1] = ((dataBuffer[0] & 0x03) << 4) | ((dataBuffer[1]) >> 4);
32. outputBuffer[2] = ((dataBuffer[1] & 0x0f) << 2) | ((dataBuffer[2]) >> 6);
33. outputBuffer[3] = dataBuffer[2] & 0x3f;
34. // If data buffer was short (i.e not 3 characters) then set
35. // end character indexes in data buffer to index of '=' symbol.
36. // This is necessary because Base64 data is always a multiple of
37. // 4 bytes and is basses with '=' symbols.
38. for (var j:uint = dataBuffer.length; j < 3; j++) {
39. outputBuffer[j + 1] = 64;
40. }
41. // Loop through output buffer and add Base64 characters to
42. // encoded data string for each character.
43. for (var k:uint = 0; k < outputBuffer.length; k++) {
44. output += BASE64_CHARS.charAt(outputBuffer[k]);
45. }
46. }
47. // Return encoded data
48. return output;
49. }
50. public static function decode(data:String):String {
51. // Decode data to ByteArray
52. var bytes:ByteArray = decodeToByteArray(data);
53. // Convert to string and return
54. return bytes.readUTFBytes(bytes.length);
55. }
56. public static function decodeToByteArray(data:String):ByteArray {
57. // Initialise output ByteArray for decoded data
58. var output:ByteArray = new ByteArray();
59. // Create data and output buffers
60. var dataBuffer:Array = new Array(4);
61. var outputBuffer:Array = new Array(3);
62. // While there are data bytes left to be processed
63. for (var i:uint = 0; i < data.length; i += 4) {
64. // Populate data buffer with position of Base64 characters for
65. // next 4 bytes from encoded data
66. for (var j:uint = 0; j < 4 && i + j < data.length; j++) {
67. dataBuffer[j] = BASE64_CHARS.indexOf(data.charAt(i + j));
68. }
69. // Decode data buffer back into bytes
70. outputBuffer[0] = (dataBuffer[0] << 2) + ((dataBuffer[1] & 0x30) >> 4);
71. outputBuffer[1] = ((dataBuffer[1] & 0x0f) << 4) + ((dataBuffer[2] & 0x3c) >> 2);
72. outputBuffer[2] = ((dataBuffer[2] & 0x03) << 6) + dataBuffer[3];
73. // Add all non-padded bytes in output buffer to decoded data
74. for (var k:uint = 0; k < outputBuffer.length; k++) {
75. if (dataBuffer[k+1] == 64) break;
76. output.writeByte(outputBuffer[k]);
77. }
78. }
79. // Rewind decoded data ByteArray
80. output.position = 0;
81. // Return decoded data
82. return output;
83. }
84. public function Base64() {
85. throw new Error("Base64 class is static container only");
86. }
87. }
88. }
下载类文件
基于 flash AS3.0 的BASE64编码与解码类相关推荐
- 基于flash AS3.0 的BASE64编码与解码类
代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--& ...
- Flash AS3.0实例教程:构建简单的声音可视化程序(波型图)
本例为Flash AS3.0实例教程,在教程中我们将学习运用SoundMixer.computeSpectrum() 方法来构建简单的声音可视化程序(即波形图),希望能给朋友们带来帮助~~ AS3.0 ...
- flash as3.0 图片切换
flash as3.0 图片切换 flash import fl.transitions.*; import fl.transitions.easing.*; import flash.system. ...
- Flash AS3.0实战
如今网页游戏在游戏产业中占有半壁江山.在网页游戏中,百分之九十使用的是flash as3来做前端交互的开发.flash以其体积小等特性,吸引了无数的玩家.比如<傲剑>,<神仙道> ...
- Python 对图像进行base64编码及解码读取为numpy、opencv、matplot需要的格式
Python 对图像进行base64编码及解码读取为numpy.opencv.matplot需要的格式 1. 效果图 2. 源码 参考 这篇博客将介绍Python如何对图像进行base64编解码及读取 ...
- js php base64,JavaScript实现Base64编码与解码的代码详解
本篇文章给大家分享的是jJavaScript实现Base64编码与解码的代码详解,内容挺不错的,希望可以帮助到有需要的朋友 一.加密解密方法使用//1.加密 var str = '124中文内容'; ...
- Base64编码和解码
Base64编码和解码 DES加密后密文长度是8个整数倍 加密后比明文长度变长,所以编码表找不到对应字符,乱码 使用Base64编码和解密:从Apache现在 1.加密后密文使用Base64编码 2. ...
- java解码base64的png图片_使用PHP对图片进行base64编码和解码(png、jpg,声音、视频)...
为什么要对图片base64编码 base64是网络上最常见的传输8Bit字节代码的编码方式之一.base64主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输.由于一些二进制字符在传输 ...
- mysql base64 乱码_PHP base64编码后解码乱码的解决办法
在用PHP做东西的时候发现了一个问题,可以简单的归结为乱码的问题,但是这个问题不是函数本身造成的.来看看罪魁祸首是谁. 嫌疑人:base64_encode 和 base64_decode 罪行:我写了 ...
最新文章
- 边缘计算Edage Computing
- linux内核报告,Linux升级内核报告.docx
- 问题用户小米科技CEO雷军:千万别把用户当上帝
- linux控制台单人五子棋简书,Java控制台版五子棋的简单实现方法
- rog live service是什么_王者荣耀五周年好礼送不停,玩游戏还能白嫖ROG游戏手机3?...
- 限制外来计算机访问,准入网关|网络准入控制|非法接入检测|限制非法访问解决方案...
- 分布式系统的可靠协调系统——Zookeeper
- 数据库系统概论王珊编写的第三章学生-课程数据库
- 面试官系统精讲Java源码及大厂真题 - 01 开篇词:为什么学习本专栏
- Ajax跨域请求与解决方案
- The constructor someMethod() is not accessible due to restriction on required library
- SAP License:SAP ECC6安装系列四:安装过程详解
- 腾讯 WXG | 技术研究-NLP算法三面复盘
- ios底部栏设计规范_2016年全新Apple iOS设计规范指南!
- [转载] Python的exec
- eclipse 插件 subclipse plugin 中修改已经登录的帐户密码的方法
- C/C++[codeup 1808]字符串查找删除
- 牛客网sql练习题解(34-42)
- 何为功能平价?特斯拉「抛弃」多传感融合,背后有哪些门道
- 2小时学会CSS,完成网页制作!