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