AS3 与 服务器 64位 int 交互

在开发中,由于使用的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();
  }
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章