如何在Javascript中读取unsigned int?

Flu*_*ffy 6 javascript ajax

我正在从服务器写一个二进制字符串,如下所示:

header('Content-type: application/octet-stream');
echo $data = pack('C*', 0, 10, 100, 127, 128, 200, 250, 255, 256);
Run Code Online (Sandbox Code Playgroud)

并用这种方式用js和jDataView lib读取它:

$.get('/get', function(text) {
    var view = new jDataView(text);

    for (var i = 0; i < 20; i++) {
        console.log(i, view.getUint8(i));
    }
});
Run Code Online (Sandbox Code Playgroud)

问题是我只能读取小于128的值.jDataView使用getCharCodeat来读取,Uint并为每个较大的值返回65533.

如何获取js中的值?

rai*_*7ow 1

当您使用以下命令更改(通过 PHP 文件)发送的标头时,它工作得很好。

header('Content-Type: text/plain; charset=x-user-defined')

如果没有这个标头(以及如何处理 XHR 响应的调整;本文详细描述了该过程),它的text值就会变得混乱:所有“无效”(> 127)字符将被逐字替换'\uFFFD'

当然,不可能从这些字符中提取原始值,因此我认为这不是 jDataView 的错误。