前言
? ? ? ? 最近微信更新了小程序的API胞谈,個(gè)人對(duì)微信小程序可以跨平臺(tái)這特性很感興趣,所以也趕趕潮流,來(lái)嘗試下烦绳。關(guān)于小程序開(kāi)發(fā)環(huán)境的安裝卿捎、調(diào)試、API調(diào)用径密,官方文檔的資料已經(jīng)很豐富了午阵,我就不重復(fù)了,這里主要記錄下我在小程序開(kāi)發(fā)這路上踩到的坑享扔,被套過(guò)的路底桂。
????????文章會(huì)持續(xù)保持更新,記錄每個(gè)有收獲的點(diǎn)惧眠,文中知識(shí)點(diǎn)如若有誤籽懦,敬請(qǐng)留言指正。
一氛魁、arrayBuffer如何轉(zhuǎn)換成中文
? ? ? ?最近在調(diào)試藍(lán)牙模塊暮顺,發(fā)現(xiàn)數(shù)據(jù)是通過(guò)arrayBuffer接收的,而且每次接收字節(jié)的最長(zhǎng)長(zhǎng)度為20個(gè)字節(jié)秀存,所以每次接收后捶码,得先把a(bǔ)rrayBuffer轉(zhuǎn)換為unit8Array,將多次接收到的數(shù)據(jù)拼接起來(lái)。問(wèn)題來(lái)了应又,數(shù)據(jù)接收之后宙项,要將其還原,也就是中文的就該以中文顯示株扛,數(shù)字的就該以數(shù)字顯示尤筐。折騰了一晚上,都沒(méi)找到合適的unit8array to chinese的方法洞就。后來(lái)發(fā)現(xiàn)盆繁,unit16array可以轉(zhuǎn)為漢字,但問(wèn)題又出現(xiàn)了旬蟋,unit8array如何轉(zhuǎn)為unit16array?還有待研究沦补。
? ? 補(bǔ)充:?jiǎn)栴}解決了吩蔑,沿用的是上面提到的思路:將uint8Array轉(zhuǎn)換為arrayBuffer,再將arrayBuffer轉(zhuǎn)換為uint16Array.代碼截圖如下:
既然arrayBuffer可以直接轉(zhuǎn)換為uint16Array,中間為何要多周轉(zhuǎn)unit8Array這一步呢? 原因是藍(lán)牙接收過(guò)來(lái)的通常是通信命令耻煤,每條命令都是有指定格式的媚送,在完整接收了一條命令后刃泌,往往需要先做一些檢驗(yàn)弄慰,才進(jìn)行下一步轉(zhuǎn)換。
還有一個(gè)問(wèn)題:為何只有uint16Array可以正確轉(zhuǎn)換首尼,而uint8Array就不行呢挑庶?---因?yàn)镾tring.fromCharCode(numX,numX,...,numX)方法接收的是指定的 Unicode 值言秸,通過(guò)Unicode值就可以直接獲取到相應(yīng)的字符。
其實(shí)還有一種解決思路:將2位uint8Array數(shù)組迎捺,合并為1位uint16Array,也可以實(shí)現(xiàn)同樣的功能举畸。