文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

AS3 unicode

2023-01-31 02:26

关注
package com.game.common
{
	
	import flash.utils.ByteArray;
	import flash.utils.Endian;

	
	public final class GameUnicodeTools
	{
		private static var ins : GameUnicodeTools;
		public static function get instance() : GameUnicodeTools
		{
			if (!ins)
			{
				ins = new GameUnicodeTools();
			}
			return ins;
		}
		
		public function GameUnicodeTools():void
		{
			if( ins )
				throw Error("GameUnicodeTools 类被设计成单例!");
		}
		
		public function decode( resBytes : ByteArray , len : uint ) : String
		{
			var bytes : ByteArray  = new ByteArray();
			bytes.endian = Endian.LITTLE_ENDIAN;
//			var surplusLen : uint = ( resBytes.length - resBytes.position + 1 > len ) ? len : resBytes.length - resBytes.position + 1;
			var surplusLen : uint = ( resBytes.length - resBytes.position > len ) ? len : resBytes.length - resBytes.position;
			bytes.writeBytes( resBytes , resBytes.position , surplusLen );
			resBytes.position = resBytes.position + surplusLen - 1;
//			bytes.writeByte(0);
//			bytes.position = 0;
			return this.byArrayToString( bytes );
		}
		
		public function encode( resStr : String , len : uint = 0  ):ByteArray
		{
			return this.StrToByteArray( resStr , ( len > 0 ) ? len : 0  );
		}
		
		//unicode string to ByteArray 
		private function StrToByteArray( strValue : String, uLen:uint = 0 ):ByteArray
		{
			var byAaryR:ByteArray = new ByteArray();
			byAaryR.endian = Endian.LITTLE_ENDIAN;
			for ( var i:int = 0; i < strValue.length; ++i )
			{
				byAaryR.writeShort(strValue.charCodeAt(i));
			}
			for ( i = 0; i < (uLen - strValue.length); ++i )
			{
				byAaryR.writeShort(0);
			}
			return byAaryR;
		}
		//ByteArray to unicode string
		private function byArrayToString( byArray:ByteArray ):String
		{
			byArray.position = 0;
			var strReturn:String = new String();
			var strRep:String = "";
//			var $cacthBytes : ByteArray = new ByteArray();
//			$cacthBytes.endian = Endian.LITTLE_ENDIAN;
			var ss : uint = 0;
			for(var i:int = 0; i <  Math.floor( byArray.length / 2 ) ; i += 1 )
			{
//				$cacthBytes.clear();
//				$cacthBytes.position = 0;
				ss = byArray.readShort();
				if( ss == 0 )
				{
					break;
				}
				else
				{
					byArray.position -= 2;
					if( ss <= 0xff )
					{
						strRep = byArray.readMultiByte( 1 , "utf-8" );
						byArray.position += 1;
					}
					else
					{
						strRep = byArray.readMultiByte( 2 , "unicode" );
					}
	//				strReturn = replaceAt(strReturn, strRep, i, i);
					strReturn += strRep;
				}
			}
//			var strRep:String = byArray.readMultiByte(byArray.length, "unicode");
			return strReturn;
		}
		private function replaceAt(char:String, value:String, beginIndex:int, endIndex:int):String 
		{
			beginIndex = Math.max(beginIndex, 0);
			endIndex = Math.min(endIndex, char.length);
			var firstPart:String = char.substr(0, beginIndex);
			var secondPart:String = char.substr(endIndex, char.length);
			return (firstPart + value + secondPart);
		}
	}
}


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯