Cloudflare 工人 Buffer.from()

Cloudflare Workers Buffer.from()

我不太熟悉缓冲区及其所有工作原理。

在节点中我可以做到

const str = "dasjkiodjsiodjpasiodfjodifjaspiofjsdioajfpasodfjsdioa";
let buff = Buffer.from(str); // <Buffer 64 61 73 6a 6b 6 etc...
let buffHex = Buffer.from(str, 'hex');

console.log(buff)

我将如何在 Cloudflare Workers 中执行此操作,因为我得到 ReferenceError: Buffer is not defined

Buffer 是一个节点 API。 Cloudflare Workers 基于 Web 平台 APIs,就像您在浏览器中找到的一样。 Buffer 的替代网络平台是 Uint8Array。您可以使用 TextEncoderTextDecoder API 在具有 UTF-8 编码和文本字符串的 Uint8Array 之间进行转换。

let bytes = new TextEncoder().encode(str);

要将 Uint8Array 转换为十六进制,您可以使用如下函数:

function bytes2hex(bytes) {
  return Array.prototype.map.call(bytes,
      byte => ('0' + byte.toString(16)).slice(-2)).join('');
}

我不建议为此使用 Buffer polyfill,因为它会使您的代码大小膨胀。直接用Uint8Array比较好

一般来说,您应该能够在 Stack Overflow 上找到有关如何对 Uint8Array 进行常见操作的答案。