gpt4 book ai didi

Javascript ArrayBuffer 到十六进制

转载 作者:行者123 更新时间:2023-12-03 02:33:23 27 4
gpt4 key购买 nike

我有一个 Javascript ArrayBuffer,我想将其转换为十六进制字符串。

有人知道我可以调用的函数或已经存在的预先编写的函数吗?

我只能找到数组缓冲区到字符串函数,但我想要数组缓冲区的十六进制转储。

最佳答案

function buf2hex(buffer) { // buffer is an ArrayBuffer
return [...new Uint8Array(buffer)]
.map(x => x.toString(16).padStart(2, '0'))
.join('');
}

// EXAMPLE:
const buffer = new Uint8Array([ 4, 8, 12, 16 ]).buffer;
console.log(buf2hex(buffer)); // = 04080c10

该函数的工作过程分为四个步骤:

  1. 将缓冲区转换为数组。
  2. 对于数组中的每个 x,它都会将该元素转换为十六进制字符串(例如,12 变为 c)。
  3. 然后获取该十六进制字符串并在左侧用零填充(例如,c 变为 0c)。
  4. 最后,它获取所有十六进制值并将它们连接成一个字符串。

下面是另一个较长的实现,它更容易理解一点,但本质上做同样的事情:

function buf2hex(buffer) { // buffer is an ArrayBuffer
// create a byte array (Uint8Array) that we can use to read the array buffer
const byteArray = new Uint8Array(buffer);

// for each element, we want to get its two-digit hexadecimal representation
const hexParts = [];
for(let i = 0; i < byteArray.length; i++) {
// convert value to hexadecimal
const hex = byteArray[i].toString(16);

// pad with zeros to length 2
const paddedHex = ('00' + hex).slice(-2);

// push to array
hexParts.push(paddedHex);
}

// join all the hex values of the elements into a single string
return hexParts.join('');
}

// EXAMPLE:
const buffer = new Uint8Array([ 4, 8, 12, 16 ]).buffer;
console.log(buf2hex(buffer)); // = 04080c10

关于Javascript ArrayBuffer 到十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40031688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com