工具&利器

微信小程序arrayBuffer与java数据类型

java Netty-socket

小程序websocket

在数据传输过程有很多方式, 如:文件、json、xml、Buffer、byte等等方式. 数据越小传输的数据也就越快. 但也越麻烦.

java数据类型.

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 前往查看

byte、short、int、long、float、double、boolean、char

arrayBuffer类型

  • Int8Array:8位有符号整数,长度1个字节。
  • Uint8Array:8位无符号整数,长度1个字节。
  • Int16Array:16位有符号整数,长度2个字节。
  • Uint16Array:16位无符号整数,长度2个字节。
  • Int32Array:32位有符号整数,长度4个字节。
  • Uint32Array:32位无符号整数,长度4个字节。
  • Float32Array:32位浮点数,长度4个字节。
  • Float64Array:64位浮点数,长度8个字节。

arrayBuffer与java数据类型对应

java arrayBuffer
byte Uint8Array
short Uint16Array
int Uint32Array
float Float32Array
double Float64Array

但看这个文章的时候, java的byte是有符号类型, 但是我设置为Int8Array的时候字节长对就不对.有大神清楚可以指证下.


小程序发送与解析arrayBuffer

发送

      var buffer = new ArrayBuffer(26);
      var obj = new DataView(buffer );
      obj.setUint8(0, 1);  //设置一个Uint8Array 在第0个位置, 值为1 十进制
      obj.setUint8(1, 0);
      obj.setUint16(2, 12);
      obj.setUint32(4, 2323);
      obj.setUint32(8, 0);
      obj.setUint32(12, 0);
      obj.setUint32(16, 0);
      obj.setUint32(20, 0);
      obj.setUint16(24, 3338);

解析

    wx.onSocketMessage(function (res) {
        var buffer = res.data;
        var dataview = new DataView(buffer);
        var ints = new Uint8Array(buffer.byteLength);
        var str = '';
        for (var i = 0; i < ints.length; i++) {
          str += String.fromCharCode(dataview.getUint8(i));
        }
        console.log(str);
    })

相关资料

ArrayBuffer
ArrayBuffer:类型化数组