我正在使用node.js v4.5.假设我有这个Uint8Array变量.
var uint8 = new Uint8Array(4);
uint8[0] = 0x1f;
uint8[1] = 0x2f;
uint8[2] = 0x3f;
uint8[3] = 0x4f;
Run Code Online (Sandbox Code Playgroud)
这个数组可以是任何长度,但我们假设长度是4.
我想有一个函数,转换uint8为十六进制字符串等效.
var hex_string = convertUint8_to_hexStr(uint8);
//hex_string becomes "1f2f3f4f"
Run Code Online (Sandbox Code Playgroud)
rob*_*lep 20
您可以使用Buffer.from()并随后使用toString('hex'):
let hex = Buffer.from(uint8).toString('hex');
Run Code Online (Sandbox Code Playgroud)
Buffer.from有多个覆盖。
如果直接用你的方法调用它uint8,它会不必要地复制其内容,因为它选择Buffer.from( <Buffer|Uint8Array> )版本。
您应该调用Buffer.from( arrayBuffer[, byteOffset[, length]] )不复制而仅创建缓冲区视图的版本。
let hex = Buffer.from(uint8.buffer,uint8.byteOffset,uint8.byteLength).toString('hex');
Run Code Online (Sandbox Code Playgroud)
另一个解决方案reduce:
uint8.reduce(function(memo, i) {
return memo + ('0' + i.toString(16)).slice(-2); //padd with leading 0 if <16
}, '');
Run Code Online (Sandbox Code Playgroud)
或map和join:
uint8.map(function(i) {
return ('0' + i.toString(16)).slice(-2);
}).join('');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8754 次 |
| 最近记录: |