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

2024-09-27 19:20:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个API服务器,它用arraybuffer格式响应任何请求。 此API web服务器在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脚本中正常工作,但在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�...

如何将响应转换为实际字符串


Tags: 服务器脚本apiurldatarequestbufferfunction
1条回答
网友
1楼 · 发布于 2024-09-27 19:20:43

考虑发送/解析^ {CD1>}作为字符串。这是jsutil,也许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
  }
}

相关问题 更多 >

    热门问题