2012-09-13 4 views
6

私はこのようなサーバからのバイナリ文字列を書いている:問題は、私は唯一の値を読み取ることができるということですJavascriptでunsigned intを読み取るには?

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

    for (var i = 0; i < 20; i++) { 
     console.log(i, view.getUint8(i)); 
    } 
}); 

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

このようlibのJSとjDataViewでそれを読んで128より小さい.jDataViewはgetCharCodeを使用してUintを読み取り、大きな値のそれぞれに対して65533を返します。

jsで値を取得するにはどうすればよいですか?

+1

「256」の範囲外ですか? –

+0

'.charCodeAt()'の意味ですか? –

+1

@ imeVidasそれは問題ですが、それは問題ではないと思います。 – raina77ow

答えて

1

あなたはこのヘッダ(とXHR応答が処理されるべきかの微調整がなければ...

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

で(PHPファイルで)送信されたヘッダを変更したときにそれがうまく機能します。this articleは、プロセスを説明詳しくは、textの値が崩れてしまいます。すべての「無効」(> 127)文字は、文字通り'\uFFFD'文字に置き換えられます。

もちろん、これらの文字から元の値を抽出することはできないため、私の意見ではjDataViewのバグではありません。

関連する問題