首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将二进制编码的字符串解码成原始的二进制缓冲区?

如何将二进制编码的字符串解码成原始的二进制缓冲区?
EN

Stack Overflow用户
提问于 2012-12-12 00:00:25
回答 3查看 26.9K关注 0票数 9

NodeJS docs强调强烈反对使用binary字符串编码,因为它将在将来的某个时候被丢弃。

但是,我正在尝试使用node-imagemagick模块生成图像缩略图,该模块只能输出binary编码的字符串。

我的最终目标是将生成的缩略图作为BLOB提交到SQLite3数据库(我使用的是node-sqlite3),因此我认为需要将缩略图作为二进制缓冲区对象。

如何将node-imagemagickbinary编码输出直接解码为原始的二进制缓冲区(而不仅仅是包含binary编码字符串的缓冲区)?我并不热衷于使用base64...

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-12 00:14:28

代码语言:javascript
复制
const buffer = new Buffer(binaryString, "binary");

测试时使用:

代码语言:javascript
复制
$ 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])

票数 17
EN

Stack Overflow用户

发布于 2016-05-28 07:25:05

我不使用节点的缓冲区进行编码。

您可以尝试iconv-lite (https://www.npmjs.com/package/iconv-lite),以防此操作开始失败:

代码语言:javascript
复制
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语法。因此,下面的代码将不起作用。你必须做一些类似这样的事情:

代码语言:javascript
复制
import { encode } from "iconv-lite";

不会更新我的代码,因为它会不断变化。参考文档:https://github.com/ashtuchkin/iconv-lite

票数 0
EN

Stack Overflow用户

发布于 2020-10-28 10:41:54

代码语言:javascript
复制
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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13823722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档