javascript - 如何将 arraybuffer 响应类型转换为 python 中的字符串?

标签 javascript python request arraybuffer

我有 API 服务器,其中响应任何具有 arraybuffer 格式的请求。 此 API 网络服务器在 Java 脚本中正常工作,如下所示:

xhrOverride.responseType = 'arraybuffer';
request = $.ajax({
url: url,
method: 'GET'
        .
        .
        .

request .done(function(data) {
                mydata = {
                    buffer: data,
                };
                myconverter(mydata );
            }
                .
                .
                .


function myconverter(data) {
    const buffer = data.buffer;
    let vals = new Uint32Array(data.buffer, 0, 5);
    data.n = vals[0] / 1000 + vals[1] ;
    let stride = vals[2];
    data.x= vals[3];
    let limits = new Int16Array(buffer, 20, 4);
    data.city= limits[0];
    data.united= limits[1];
    data.vil= limits[2];
  .
  .
  .

以上代码在 Java Script 中运行正常,但在 Python 中运行不正常,如下所示:

response = requests.get(url)
print(response.text) 

输出:

��7DT�z !��?���{_s:x�0�Ɗ���$����Fp�@�Uk�K�u�jq,���k�,v��Z�j�...

我将响应转换为 base64,然后将 base64 转换为 UTF-8,但我的答案还是:

��7DT�z !��?���{_s:x�0�Ɗ���$����Fp�@�Uk�K�u�jq,���k�,v��Z�j�...

如何将响应转换为真正的字符串?

最佳答案

考虑将 ArrayBuffer 作为字符串发送/解析。这是 JS 实用程序,也许 Python 中的类似实用程序就足够了?

class ArrayBufferUtil {
  static toString(buffer) {
    return new Uint8Array(buffer).toString()
  }
  
  static parse(s) {
    return new Uint8Array(
      s.split(',').map(i => parseInt(i, 10))
    ).buffer
  }
}

关于javascript - 如何将 arraybuffer 响应类型转换为 python 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66391157/

相关文章:

python - 如何将 Markdown 列表解析为 Python 中的字典?

python - 在带有 zip() 的 for 循环中使用 lambda

java - 错误“svn :SSLv3 SSLContext not available on RAD 7. 5

javascript - 使用 Cheerio 和 Response for Node 网络抓取工具,将响应函数结果传递到 View

javascript - asp.net MVC3 和 jquery AJAX 教程

javascript - 第一次运行应用程序时,使用 WebView.loadUrl 执行 javascript 不起作用

javascript - 新 URL(location.href) 在 IE 中不起作用

python - 在列表python中拆分Mac地址

node.js - Alexa AWS 错误 : task timed out after 3. 00 秒

javascript - 谷歌地图信息窗口中的 Angular