将Javascript Uint8Array的内容打印为原始字节

将Javascript Uint8Array的内容打印为原始字节,javascript,string,binary-data,Javascript,String,Binary Data,我有一个Javascript的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()); debug

我有一个Javascript的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);
var bytes=新的Uint8Array(数据);
var debugBytes=“”;
对于(var i=0;i,该方法的作用不像可以附加到的缓冲区,而是返回一个新字符串

因此,每次调用时,必须将
concat
的结果分配给结果字符串:

 debugBytes = debugBytes.concat(bytes[i].toString());
 debugBytes = debugBytes.concat(",");
这样实现,您的
debugBytes
字符串将包含一个以逗号分隔的字节值列表


更简洁的解决方案是将
Uint8Array
转换为常规Javascript数组,然后使用以下方法:


当前的ECMAScript标准中没有
printf
方法,但是有许多自定义实现。有关一些建议,请参阅此部分。

该方法的作用不像可以附加到的缓冲区,而是返回一个新字符串

因此,每次调用时,必须将
concat
的结果分配给结果字符串:

 debugBytes = debugBytes.concat(bytes[i].toString());
 debugBytes = debugBytes.concat(",");
这样实现,您的
debugBytes
字符串将包含一个以逗号分隔的字节值列表


更简洁的解决方案是将
Uint8Array
转换为常规Javascript数组,然后使用以下方法:



当前的ECMAScript标准中没有
printf
方法,但是有许多自定义实现。请参阅本文以获取一些建议。

最好一次调用
concat
(以减少方法调用):
debugBytes=debugBytes.concat(bytes[i].toString()+,”;
。或者根本不调用(隐式):
debugBytes+=bytes[i].toString()“+”,“;
@AlejandroIván减少方法调用?您认为使用
+
连接字符串时会发生什么情况?唯一的替代方法是减少代码行,不幸的是也减少可读性。
concat
是某种数组连接。所以这个问题说连接更快(由于优化):只是说说而已。
concat
不是“某种数组连接”,使用
+
的行为与调用
concat
的行为相同。最好一次调用
concat
(以减少方法调用):
debugBytes=debugBytes.concat(bytes[i].toString()+,;
(隐式):
debugBytes+=bytes[i].toString()“+”,“;
@AlejandroIván减少方法调用?您认为使用
+
连接字符串时会发生什么情况?唯一的替代方法是减少代码行,不幸的是也减少可读性。
concat
是某种数组连接。所以这个问题说连接更快(由于优化):只是说说而已。
concat
不是“某种数组连接”,使用
+
的行为与调用
concat
的行为相同。