簡體   English   中英

將Javascript Uint8Array的內容打印為原始字節

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM