AS3 与 服务器 64位 int 交互

本文介绍了一种在ActionScript 3中处理大于53位数值的传输方法。通过将数值拆分为两个32位整数进行打包和解包,实现了64位整数的有效传输。

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

在开发中,由于使用的ID需要用到64位uint ,但是as3 最大的number也只支持到53位,这个数值也足以满足双方需求,故而双方用64为uint传输(8字节),数值上限53位。

其思想也比较简单,打包时将number类型值拆分成2个uint往ByteArray里写。解包时也按2个uint方式读取,再做个移位就搞定了。双方传输都采用大端方式编码。

public function TestDemo()
  {
   var bin:ByteArray = writeNumber(8899999699899979);
   var val:Number = readNumber(bin);
   trace("================= 数值: "+val);   
  }
  
  
  public function writeNumber(val:Number):ByteArray
  {
   var data:ByteArray = new ByteArray();
   var bin:ByteArray = new ByteArray();
   bin.writeUnsignedInt(int(val / 4294967295));
   bin.writeUnsignedInt(int(val));
   data.writeBytes(bin);
   bin = null;
   data.position = 0;
   return data;
  }
  
  
  public function readNumber(bin:ByteArray):Number
  {
   var data:uint = bin.readUnsignedInt();
   return (data) * 256 * 256 * 256 * 256 + bin.readUnsignedInt();
  }
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值