AS3 读写 C++ 64位数字

为框架添加了一套新的与C++通讯的数据协议,其中和C++的大爷们对于他们的64位数字(unsigned long long)读写的问题纠结了很久。真心觉得“学好C++走遍天下都不怕啊”

AS里Number最大支持53整数位,所以AS里面是没有办法表示超过53位的整数的,所以这里的读写64数字只是在数字大小不超过53位的情况下可用。

从字节流读出64数字:

1
2
3
4
5
6
7
8
9
10
11
var long_h:uint;
 
var long_l:uint;
 
//C++传过来的数据包是打过pack的 所以字节流里 低位在前
 
long_l = byteArray.readUnsignedInt();
 
long_h = byteArray.readUnsignedInt();
 
var num:Number = long_h*4294967296 + long_l;// 4294967296 = 2^32

写入:

1
2
3
4
5
6
7
8
9
var num:Number = 23212232;
 
var long_l:uint = uint(num);
 
var long_h:uint = (num - long_l)/4294967296;
 
byteArray.writeUnsignedInt(long_l);
 
byteArray.writeUnsignedInt(long_h);
posted @ 2013-11-19 10:45  回眸笑苍生  阅读(432)  评论(0编辑  收藏  举报