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();
  }
  

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