微信蓝牙调试工具:https://iot.weixin.qq.com/wiki/document-0_5.html

            可以解析微信协议,并且知道设备哪个字段赋值了,哪个字段没有赋值。


  Protobuf的js库:

  https://github.com/protobufjs/protobuf.js




理解protobuf之前必须要懂variant编码  !!!!!!!!!!

varian编码 :http://blog.sina.com.cn/s/blog_828e50020102vfrf.html

     varian解码步骤:

     1)去掉标识位,也就是每个字节的最高位。

     2)反转字节

     3)2进制转10进制即得到原来的数






什么是Protobuf协议?

和json xml一样,也是一种数据交换格式.可以序列化与反序列化.不同的是protobuf是一种变长协议,格式较为麻烦,但是效率很高.

参考文档:

http://blog.csdn.net/yueqian_scut/article/details/47606599 (variant算法)

        注意这个规则:

        



        https://blog.csdn.net/fullsail/article/details/42686699  (超级详细)


    

Protobuf的相关资料

http://blog.csdn.net/shuliwuflying/article/details/50814123

http://www.jianshu.com/p/e0d81a9963e9




protobuf语言:

http://www.cnblogs.com/dkblog/archive/2012/03/27/2419010.html

    




.proto转.java的开源库

http://www.jianshu.com/p/3a543757d086  (利用gradle配置,同步一下,走task即可生成java文件)

java对象与16进制字符串互转需要注意的问题:

1)对于proto中bytes类型得到java的字符串:

    

String mac1 = DataTransfer.bytes2HexString(authRequest.getMacAddress().toByteArray());

  2)java对象转16进制报文

    凡是数据数字,都是设置的10进制数据.

    凡是字符串,都是native string.