As3 读取long类型的数字

来源:互联网 发布:企业以英文为域名的有 编辑:程序博客网 时间:2024/05/29 15:12
AS3 由于只有  int, uint, Number类型;所以再跟后台交互时 无法读取Long;(及没有 socket.readLong的方法);
但后台很多时候 想传long 类型的值; 如时间, 较大数额的钱;

于是写了个 读取long 方法;
static public function readLong( bytes:ByteArray):Number
{
var long:String = "0x";
for (var i:int = 0; i < 8; i++)
{
var numStr:String = bytes.readUnsignedByte().toString(16);
var hexStr:String = numStr.length == 1 ? "0"+numStr : numStr;
long += hexStr;
}
return parseInt( long);
}

后来项目又需要 发送long; 于是又写了一个 写入long的方法:
static public function writeLong( bytes:ByteArray, value:Number):void
 {
            var str:String = value.toString(16);
            var lgth:int = 16 - str.length;
            for( var i:int = 0; i < lgth; i++)
            {
                str = "0" + str;
            }

            var subStr:String = str.substr( 0, 8);           
            bytes.writeUnsignedInt( parseInt( "0x" + subStr));
            subStr = str.substr( 8, 8);
            bytes.writeUnsignedInt( parseInt( "0x" + subStr));

 }


注意一点的是:  由于AS3中Number型采用的是浮点数格式, 能表示的最大有效位是52位,    所以用Number来存储long的数据,不能超过52位;   不然就会出问题

0 0