0

タイトルが意味をなすかどうかはわかりませんが、ここに必要なものがあります。

これは私のバイトです: ���������ˇ�����0F*E��ù� � このバイトの値は、この php スニペットで取得することができました。

<?php
$var = "���������ˇ�����0F*E��ù�";

for($i = 0; $i < strlen($var); $i++)
{
   echo ord($var[$i])."<br/>";
}
?>

結果: 0 0 0 0 0 0 0 2 2 0 255 0 0 0 0 0 2 48 70 1 42 69 0 0 1 157 0

しかし今、私はまったく同じことを PHP なしで Java Script で行う必要があります。どんな助けでもいただければ幸いです

4

2 に答える 2

2

JavaScript で文字列の各文字の数値を取得したい場合は、次のように実行できます。

var someString = "blarg";

for(var i=0;i<someString.length;i++) {
    var char = someString.charCodeAt(i);

}

String.charCodeAt(index)文字列内の指定された文字の Unicode コードポイント値を返します。固定の 8 ビット エンコーディング (つまり ASCII) の数値を返す PHP や C のようには動作しません。あなたの文字列が(生のバイナリデータではなく)人間が読める文字列であると仮定すると、使用charCodeAtはまったく問題ありません。生のバイナリ データを扱う場合は、JavaScript 文字列を使用しないでください。

文字列に 128 未満の Unicode コードポイントを持つ文字が含まれている場合、PHP または C のタイプcharCodeAtと同じように動作しますが、提供した例には非 ASCII 文字が含まれているため、Unicode の (複雑な場合もある) ルールが適用されます。ordchar

ここのドキュメントを参照してcharCodeAtください: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/charCodeAt

于 2013-03-30T10:47:56.210 に答える
1

PHP 文字列は 8 ビット (バイト 0..255) として計算されますが、JavaScript は 16 ビットの Unicode 文字 (0..65535) を使用します。文字列に応じて、(16 ビット) 文字コードまたはバイトに分割できます。String に 8 ビット文字のみが含まれていることがわかっている場合は、"hiByte" (以下を参照) を無視して、PHP と同じ結果を得ることができます。

function toByteVersionA(s) {
    var len = s.length;
    // char codes
    var charCodes = new Array();
    for(var i=0; i<len; i++) {
        charCodes.push(s.charCodeAt(i).toString());
    }
    var charCodesString = charCodes.join(" ");
    return charCodesString;
}

function toByteVersionB(s) {
    var len = s.length;
    var bytes = new Array();
    for(var i=0; i<len; i++) {
        var charCode = s.charCodeAt(i);
        var loByte = charCode & 255;
        var hiByte = charCode >> 8;
        bytes.push(loByte.toString());
        bytes.push(hiByte.toString());
    }
   var bytesString = bytes.join(" ");
   return bytesString;
}

function toByteVersionC(s) {
   var len = s.length;
   var bytes = new Array();
   for(var i=0; i<len; i++) {
        var charCode = s.charCodeAt(i);
        var loByte = charCode & 255;
        bytes.push(loByte.toString());
   }
   var bytesString = bytes.join(" ");
   return bytesString;
}

var myString = "abc"; // whatever your String is
var myBytes = toByteVersionA(myString); // whatever version you want
于 2013-03-30T11:15:32.207 に答える