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
(全文完)
- 文章ID:2367
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/int64-and-buffer-ts-version-for-egret/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。