在此記錄遇到的問題,若遇到同樣的問題,希望可以幫到各位。
我從藍牙設備獲取的數據爲16進制 需要轉爲中文 同樣還有另一種16進制 unicode16進制數據 搜索的大部分都是直接轉換的方法 我都一一嘗試 可能是搜索的姿勢不對吧 只好自己解決咯 咬牙切齒罵c開發
首先將我獲取的16進制全部轉爲 2進制 啊哈哈哈 我不知道有沒有快捷的函數轉法 反正我是自己寫的
//16進制轉2進制
changeTobinary: function (temperature) {
var charary = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
var numary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
var binarynum = '';
// 檢索對應16進制的值
for (var i = 0; i < temperature.length; i++) {
var num = 0;
var cons = temperature.substring(i, i + 1)
for (var t = 0; t < charary.length; t++) {
if (cons == charary[t]) {
num = numary[t];
}
}
var binary = '';
while (num > 0) {
var yu = num % 2;
num = parseInt(num / 2);
binary = yu + binary;
}
while (binary.length < 4) {
binary = '0' + binary;
}
binarynum = binarynum + binary;
}
while (binarynum.length < 8) {
binarynum = '0' + binarynum;
}
var splthree = '';
splthree = binarynum;
return splthree;
},
別問我啥意思 寫完之後 我就忘了啥意思 哈哈哈
這裏是我最糾結的東西了
2進制轉unicode2進制
以及unicode2進制轉unicode16進制 最後轉爲中文 直接上代碼
utf8changeunicode: function (binarylist) {
var endindex = 0;//判斷需要循環幾次後存入數據
var binarylistcope = [];//存儲處理後的數據
var endbinarycope = '';//存儲處理後的數據
// 循環取出數組中的二進制
var i = 0;
while (i < binarylist.length) {
// 循環判斷字符串否和標準
var t = 0;//計數t
var str = binarylist[i];
while (t < str.length) {
var index = str.substring(t, t + 1);
// 如果符合規則 = 1 計數+1 否則跳出判斷
if (index == 0) {
break;
}
else {
t++;
}
}
var end = t + 1; //判斷需要截取的index
if (endindex == 0) {
endindex = t;
endbinarycope = '';
}
var endstr = str.substring(end, str.length);
if (endindex == 1) {
endbinarycope += endstr;
binarylistcope.push(endbinarycope);
endindex--;
}
else if (endindex == 0) {
endbinarycope += endstr;
binarylistcope.push(endbinarycope);
}
else {
endbinarycope += endstr;
endindex--;
}
i++
}
var unicodelist = this.changehexadecimal(binarylistcope);
console.log(unicodelist);
var stringlist = [];
for (var a = 0; a < unicodelist.length; a++) {
while (unicodelist[a].length < 4) {
unicodelist[a] = '0' + unicodelist[a];
}
stringlist.push('\\u' + unicodelist[a]);
}
console.log(stringlist);
var namedev = '{"str":"';
for (var i = 0; i < stringlist.length; i++) {
namedev += stringlist[i];
}
namedev = namedev + '"}';
return JSON.parse(namedev).str
},
changehexadecimal: function (binarylist) {
var charary = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
var numary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
var endlist = [];
for (var i = 0; i < binarylist.length; i++) {
var str = binarylist[i];
var numb = str.length;
while (numb % 4 != 0) {
str = '0' + str;
numb = str.length;
}
var endstr = '';
for (var t = 0; t < str.length / 4; t++) {
var cons = str.substring(t * 4, t * 4 + 4);
var cc = 0;
for (var k = 0; k < cons.length; k++) {
var cont = parseInt(cons.substring(k, k + 1));
var num = cons.length - k - 1;
var kf = 2;
if (num == 0) {
kf = 1;
}
else if (num == 1) {
kf = 2;
}
else {
while (num - 1 >= 1) {
kf = 2 * kf;
--num;
}
}
cc = kf * cont + cc;
}
for (var k = 0; k < numary.length; k++) {
if (cc == numary[k]) {
cc = charary[k];
}
}
endstr += cc;
}
endlist.push(endstr)
}
return endlist;
},
到此記錄完成