我有一個JavaScript函數將HEX轉換爲ASCII,然後將其輸出到串行連接。 但是,當監視串行連接時,我可以看到轉換後的輸出不正確。十六進制ASCII轉換錯誤
我有這樣的javascript代碼:
function hex2a(hexx) {
var hex = hexx.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
return {payload: hex2a(msg.payload)}; // returns '2460'
舉個例子,我想這個十六進制轉換:
0340209c
,但監測串行連接我看到時得到什麼實際發送的是這:
03 40 20 c2 9c
所以設備回答一個故障信息。 我在這裏撓我的腦袋。一些十六進制命令可以正確轉換(例如0340615b)。 我正在通過節點紅色輸出到串行連接。 輸出節點似乎只接受ascii文本而不是HEX。
我希望有人能引導我走向正確的方向。 謝謝你的回覆!
那你究竟傳遞給你的函數?你會得到什麼結果?期望的結果是什麼? – hindmost
對不起, 我通過我給出的字符串作爲例子:0340209c 我只想看到這轉換爲ascii,當我監視串行連接,它應該輸出「03 40 20 9c」 但現在它輸出:「03 40 20 c2 9c「。 – Bart
換句話說,你只是想把這個字符串分成兩個char-chunk? – hindmost