g'day人民,在javascript中處理uint8_t
我正在使用MavLink獲取GPS信息。消息類型之一是GPS_STATUS,它由MavLink用一系列uint8_t [20]描述。
如果我運行下面的代碼:
console.log(' sat prn: ' + message.satellite_prn);
console.log(' sat prn: ' + JSON.stringify(message.satellite_prn));
console.log(' sat prn: ' + JSON.stringify(new Uint8Array(message.satellite_prn)));
我得到以下輸出:
sat prn: <weird charcaters...>
sat prn: "\u0002\u0005\n\f\u000f\u0012\u0015\u0019\u001a\u001b\u001d\u001e\u001f\u0000\u0000\u0000\u0000"
sat prn: {"BYTES_PER_ELEMENT":1,"buffer":{"byteLength":0},"length":0,"byteOffset":0,"byteLength":0}
所以,很顯然它不工作。我需要一種方法來獲取每個元素的int值。
這讓我覺得我能做到以下幾點:
satellite_prn = Array.apply([], new Uint8Array(message.satellite_prn));
satellite_prn.length === 20;
satellite_prn.constructor === Array;
但是當我通過JSON字符串化它,它報告[],我想這是一個空陣列。
任何人都知道我該怎麼做?我知道數據是20個無符號8位整數的數組。我只需要知道如何訪問或解析它們。
注:我使用node.js,但這不應該影響我在做什麼。這就是我使用console.log的原因,因爲它在node.js中有效。
感謝湯姆,來闡明的事情對我來說。在我的情況下,我從一些硬件獲取數據,底層實現是c。這就是爲什麼我不得不處理這個問題。我實際上回答自己的解決方案,但我更喜歡你的,因爲它解釋了Uint8Array的使用。 :-) – Metalskin