[英]Printing the contents of a Javascript Uint8Array as raw bytes
我有一個用Java語言編寫的Uint8Array,我想將其內容打印到控制台,例如
255, 19, 42, 0
這是我的代碼,當前顯示一個空字符串
var bytes = new Uint8Array(data);
var debugBytes = "";
for(var i=0; i<bytes.byteLength; i++) {
debugBytes.concat(bytes[i].toString());
debugBytes.concat(",");
}
console.log('Processing packet [' + bytes[1] + '] ' + debugBytes);
如果設置了斷點,我可以在調試器中看到數據,因此字節肯定會被填充。 當我嘗試通過另一種方法進行打印時,它將所有字節轉換為ASCII,但是我的數據大部分不在ASCII可打印范圍內。
JavaScript中有與printf()等效的東西嗎?
concat
方法的作用不像可以附加到的緩沖區,而是返回一個新字符串。
因此,您必須在每次調用時將concat
的結果分配給結果字符串:
debugBytes = debugBytes.concat(bytes[i].toString());
debugBytes = debugBytes.concat(",");
像這樣實現,您的debugBytes
字符串最終將包含字節值的逗號分隔列表。
更為簡潔的解決方案是將Uint8Array
轉換為常規Javascript數組,然后使用join
方法:
console.log(Array.apply([], bytes).join(","));
當前的ECMAScript標准中沒有printf
方法,但是有許多自定義實現。 請參閱此問題以獲取一些建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.