test.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. var ByteBuffer = require('./ByteBuffer');
  2. /*************************基本操作****************************/
  3. //压包操作
  4. var sbuf = new ByteBuffer();
  5. var buffer = sbuf.string('abc123你好')//变长字符串,前两个字节表示长度
  6. .int32(-999).uint32(999).float(-0.5)
  7. .int64(9999999).double(-0.000005).short(32767).ushort(65535)
  8. .byte(255)
  9. .vstring('abcd',5)//定长字符串,不足的字节补0x00
  10. .byteArray([65,66,67,68,69],5)//字节数组,不足字节补0x00
  11. .pack();//结尾调用打包方法
  12. console.log(buffer);
  13. //解包操作
  14. var rbuf = new ByteBuffer(buffer);
  15. //解包出来是一个数组
  16. var arr = rbuf.string()//变长字符串,前两个字节表示长度
  17. .int32().uint32().float()
  18. .int64().double().short().ushort()
  19. .byte()
  20. .vstring(null,5)//定长字符串,不足的字节补0x00
  21. .byteArray(null,5)//字节数组,不足字节补0x00
  22. .unpack();//结尾调用解包方法
  23. console.log(arr);
  24. /*************************更多操作****************************/
  25. //指定字符编码(默认:utf8):utf8/ascii/
  26. var sbuf = new ByteBuffer().encoding('ascii');
  27. //指定字节序(默认:BigEndian)
  28. var sbuf = new ByteBuffer().littleEndian();
  29. //指定数据在二进制的初始位置 默认是0
  30. var sbuf = new ByteBuffer(buffer,2);
  31. //插入数据到指定位置
  32. var sbuf = new ByteBuffer();
  33. sbuf.int32(9999,0);//把这个int32数据插入到ByteBuffer的第一个位置
  34. //在打包的时候在开始位置插入一个short型表示包长(通信层中的包头)
  35. var buffer = sbuf.packWithHead();