如何将包含UTF-8编码文本的BinData对象转换为字符串?

我正在使用MongoDB shellmongo命令)。它基本上是Javascript交互式控制台(我认为它是SpiderMonkey),但是没有像Node.js中的Buffer对象可以与BinData对象提供的十六进制或base64格式一起使用。

最佳答案

我可以使用从BinData到十六进制的转换,然后解析十六进制字符串。

function hex2a(hexStr) {
  var s = '';
  for (let i=0; i<hexStr.length; i+=2)
    s += String.fromCharCode(parseInt(hexStr.substr(i, 2), 16));
  return s;
}

hex2a(BinData(0,"aGVsbG8=").hex())
// returns "hello"


但这仅适用于ASCII。

07-28 11:28