前言
最近微信更新了小程序的API,个人对微信小程序可以跨平台这特性很感兴趣,所以也赶赶潮流,来尝试下。关于小程序开发环境的安装、调试、API调用,官方文档的资料已经很丰富了,我就不重复了,这里主要记录下我在小程序开发这路上踩到的坑,被套过的路。
文章会持续保持更新,记录每个有收获的点,文中知识点如若有误,敬请留言指正。
一、arrayBuffer如何转换成中文
最近在调试蓝牙模块,发现数据是通过arrayBuffer接收的,而且每次接收字节的最长长度为20个字节,所以每次接收后,得先把arrayBuffer转换为unit8Array,将多次接收到的数据拼接起来。问题来了,数据接收之后,要将其还原,也就是中文的就该以中文显示,数字的就该以数字显示。折腾了一晚上,都没找到合适的unit8array to chinese的方法。后来发现,unit16array可以转为汉字,但问题又出现了,unit8array如何转为unit16array?还有待研究。
补充:问题解决了,沿用的是上面提到的思路:将uint8Array转换为arrayBuffer,再将arrayBuffer转换为uint16Array.代码截图如下:
既然arrayBuffer可以直接转换为uint16Array,中间为何要多周转unit8Array这一步呢? 原因是蓝牙接收过来的通常是通信命令,每条命令都是有指定格式的,在完整接收了一条命令后,往往需要先做一些检验,才进行下一步转换。
还有一个问题:为何只有uint16Array可以正确转换,而uint8Array就不行呢?---因为String.fromCharCode(numX,numX,...,numX)方法接收的是指定的 Unicode 值,通过Unicode值就可以直接获取到相应的字符。
其实还有一种解决思路:将2位uint8Array数组,合并为1位uint16Array,也可以实现同样的功能。