【问题标题】:encode and decode with multiple strings使用多个字符串进行编码和解码
【发布时间】:2018-04-11 05:41:59
【问题描述】:

在我的一项任务中,我需要在发送数据时对数据进行编码,并在接收端解码数据。

Encoding : Buffer.from("bob" + "carl").toString('base64');
Decoding : Buffer.from(<encoded-string>,'base64').toString('ascii'));

如您所见,我在这里编码了 2 个字符串('bob' 和 'carl')。有什么方法可以在解码时得到 2 个单独的字符串?

【问题讨论】:

  • 什么,您希望解码器自动知道您希望它在哪里拆分输出字符串?不,那是不可能的。如果你想单独编码和解码它们。
  • @Patrick:我确信解码器无法拆分输出字符串,因为它不知道多个字符串的结束/开始。但是,有没有一种方法可以一次对多个字符串进行编码,并且我可以在解码时识别多个字符串?
  • arrayOfEncodedStrings = ["bob", "carl"].map(string =&gt; Buffer.from(string, 'ascii').toString('base64')) 和 arrayOfDecodedStrings = arrayOfEncodedStrings.map(string =&gt; Buffer.from(string, 'base64').toString('ascii'))?
  • @Patrick:arrayOfEncodedStrings 实际上将包含多个编码字符串。这不是我要找的。结果编码字符串必须是一个字符串。

标签: javascript node.js string character-encoding base64


【解决方案1】:

您可以使用高度唯一的字符串作为分隔符,然后在另一侧使用匹配分隔符的拆分。

例如:

delimiter = "~~~"

编码

Buffer.from("bob" + delimiter + "carl").toString('base64');

解码

decode = Buffer.from(<encoded-string>,'base64').toString('ascii')).split(delimiter);
decode[0] == "bob";
decode[1] == "carl";

【讨论】:

  • 酷。这似乎是一种可能的方式。还有其他人吗?我正在寻找各种可能的选项,因为我可能需要在 URL 中以不同的方式发送这个编码字符串。
  • 我建议使用控制字符作为分隔符(特别是如果您知道原始字符串不会有控制字符,这应该是这种情况,但对于少数明显的(新行,制表符) . U+0003 (End-Of-Text) 似乎是个不错的选择。
  • @Bobby 我给你答案已经两周了,你承认这是正确的。除了说“不同的方式”之外,您应该接受它或提供更多关于您正在寻找的其他内容的说明。
猜你喜欢
  • 1970-01-01
  • 2019-08-18
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多