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