Int64.ts and Buffer.ts for Egret

前几天写了一篇 Javascript 的 64bit Int 支持,列举了一些在 Javascript 中支持 64bit 数值的已有方法。

其实,写那篇是为了在 egret 中支持 64bit 数值,原因么,上一篇有讲。

由于 egret 使用的是 TypeScript ,我基于 node-int64 翻译了一个 TypeScript 版本Int64.ts ,方便伸手党。同时为了方便和服务端大爷通信,又继承 egert.ByteArray 写了个 Buffer.ts

note-int64 采用的是 node 的 Buffer 来保存 64bit 数字信息。我给改成了使用 egret.ByteArray 。后来为了更加通用,又改成了直接使用 Array。

Buffer.ts 中则仅仅实现了 readInt64 和 writeInt64,Unsigned 版本直接调用这两个方法。

这两个文件都在 gist 上,请科学上网。

给一段测试代码:

 1var i64:Int64 = new Int64(0x1020304050607);
 2var buf:Buffer = new Buffer();
 3buf.writeInt64(i64);
 4buf.writeUnsignedInt64(i64.toNumber());
 5buf.position = 0;
 6for(var i:number=0;i<buf.length;i++)
 7{
 8	console.log(buf.readByte());
 9}
10buf.position = 0;
11console.log(buf.readInt64());
12console.log(buf.readUnsignedInt64());
13// 1
14// 2
15// 3
16// 4
17// 5
18// 6
19// 7
20// 0
21// 1
22// 2
23// 3
24// 4
25// 5
26// 6
27// 7
28// 283686952306183
29// 283686952306183
...
javascript

(全文完)