如何将arraybuffer响应类型转换为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 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的util,也许在Python中有一个类似的util就足够了?

class ArrayBufferUtil {
static toString(buffer) {
return new Uint8Array(buffer).toString()
}

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

最新更新