NodeJS docs强调强烈反对使用binary字符串编码,因为它将在将来的某个时候被丢弃。
但是,我正在尝试使用node-imagemagick模块生成图像缩略图,该模块只能输出binary编码的字符串。
我的最终目标是将生成的缩略图作为BLOB提交到SQLite3数据库(我使用的是node-sqlite3),因此我认为需要将缩略图作为二进制缓冲区对象。
如何将node-imagemagick的binary编码输出直接解码为原始的二进制缓冲区(而不仅仅是包含binary编码字符串的缓冲区)?我并不热衷于使用base64...
发布于 2012-12-12 00:14:28
const buffer = new Buffer(binaryString, "binary");测试时使用:
$ node
> var binaryString = "\xff\xfa\xc3\x4e";
> var buffer = new Buffer(binaryString, "binary");
> console.log(buffer);
<Buffer ff fa c3 4e>更新:从v10.0.0开始-请改用Buffer.from(string[, encoding])。
发布于 2016-05-28 07:25:05
我不使用节点的缓冲区进行编码。
您可以尝试iconv-lite (https://www.npmjs.com/package/iconv-lite),以防此操作开始失败:
var encode = require("iconv-lite");
var binaryString = "\xff\xfa\xc3\x4e";
var buffer = encode(binaryString, "binary");
console.log(buffer);
// Prints <Buffer ff fa c3 4e>UPDATE iconv-lite库现在已经切换到es6语法。因此,下面的代码将不起作用。你必须做一些类似这样的事情:
import { encode } from "iconv-lite";不会更新我的代码,因为它会不断变化。参考文档:https://github.com/ashtuchkin/iconv-lite
发布于 2020-10-28 10:41:54
const bin = 'PK\u0003\u0004\n\u0000\u0000\u0000\b\u0000\u0013{yB½g].9\u0001\u0000\u00005\u0004\u0000\u0000\u0013\u0000\u0000\u0000[Content_Types].xml'
const buf = new Buffer.from(bin, 'binary');
console.log(buf)
// <Buffer 50 4b 03 04 0a 00 00 00 08 00 13 7b 79 42 bd 67 5d 2e 39 01 00 00 35 04 00 00 13 00 00 00 5b 43 6f 6e 74 65 6e 74 5f 54 79 70 65 73 5d 2e 78 6d 6c>https://stackoverflow.com/questions/13823722
复制相似问题