为框架添加了一套新的与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); |