As3 读取long类型的数字

本文详细介绍了在AS3环境下通过自定义方法实现Long类型的读取与发送,解决了与后台交互时Long类型数据无法直接处理的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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位;   不然就会出问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值