【问题标题】:converting buffer to string将缓冲区转换为字符串
【发布时间】:2019-07-29 17:37:33
【问题描述】:

这是我的数据:

"buffer": {
        "type": "Buffer",
        "data": [
            8,
            4,
            18,
            32,
            203,
            243,
            203,
            190,
            254,
            80,
            185,
            227,
            225,
            187,
            114,
            219,
            243,
            87,
            83,
            254,
            248,
            95,
            139,
            1,
            26,
            198,
            149,
            158,
            30,
            44,
            146,
            237,
            166,
            70,
            199,
            9,
            26,
            32,
            138,
            251,
            102,
            14,
            230,
            244,
            102,
            250,
            142,
            53,
            210,
            190,
            9,
            23,
            169,
            98,
            14,
            156,
            148,
            99,
            168,
            204,
            145,
            108,
            191,
            223,
            189,
            58,
            202,
            61,
            52,
            254
        ]
    },

我想把它转换成一个字符串。到目前为止,尝试了以下提到的事情:

  1. .toString()
  2. .new 字符串(缓冲区)
  3. String.fromCharCode.apply(null, buffer)
  4. buffer.map(c => String.fromCharCode(c)).join('') 等

顺便说一句,我无法访问数据,因为当我尝试访问数据时它会抛出未定义的,所以我传递了完整的对象,在这种情况下是要解析的缓冲区,它没有返回正确的结果。它正在返回"\b Ì jQßô\f:l{Ê­3DZz²ú_¿;t_ ¹ÐÇævËçÕ§MAjHríþ;!/Ýdãi",

有人可以帮我解决我做错了什么吗?

【问题讨论】:

  • 您需要分享获取缓冲区的代码
  • which is not returning the proper result. 那么正确的结果是什么?这些数字看起来不会产生可读的 ascii。
  • @TienDuong 当我调用其函数时,我将缓冲区作为 Fabric 节点 js sdk 响应的一部分。
  • 没有这样的具体代码。它只是一个函数调用。 let response = await channel.queryInfo(peer, true); 如果有帮助,这里是函数调用
  • @tkausl 是的,我没有考虑过这种可能性。它可能会返回我现在得到的任何东西。

标签: javascript node.js


【解决方案1】:

您应该将编码传递给.toString() 函数,如下例所示:

foo.toString('utf8');

【讨论】:

    【解决方案2】:

    试试这个:

    let data = {"buffer": {
        "type": "Buffer",
        "data": [
            8,
            4,
            18,
            32,
            203,
            243,
            203,
            190,
            254,
            80,
            185,
            227,
            225,
            187,
            114,
            219,
            243,
            87,
            83,
            254,
            248,
            95,
            139,
            1,
            26,
            198,
            149,
            158,
            30,
            44,
            146,
            237,
            166,
            70,
            199,
            9,
            26,
            32,
            138,
            251,
            102,
            14,
            230,
            244,
            102,
            250,
            142,
            53,
            210,
            190,
            9,
            23,
            169,
            98,
            14,
            156,
            148,
            99,
            168,
            204,
            145,
            108,
            191,
            223,
            189,
            58,
            202,
            61,
            52,
            254
        ]
    }}
    let newstr = JSON.stringify(data);
    console.log(newstr)
    console.log(JSON.parse(newstr).buffer.data)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 2019-07-30
      • 2019-07-29
      • 2018-06-03
      • 2021-01-04
      • 1970-01-01
      相关资源
      最近更新 更多