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
。您可以使用 TextEncoder
和 TextDecoder
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
进行常见操作的答案。
我不太熟悉缓冲区及其所有工作原理。
在节点中我可以做到
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
。您可以使用 TextEncoder
和 TextDecoder
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
进行常见操作的答案。