0

次の関数を使用して、ASCIIを10進数に変換します。

function ascii_to_dec($str)
{
  echo $str."<br />";
  for ($i = 0, $j = strlen($str); $i < $j; $i++) 
  {
    $dec_array[$i] = ord($str[$i]);
  }
return $dec_array;
}

例:

$ascii ="2010/";
$newvar = ascii_to_dec($ascii);

そして、このコードを使用して関数を呼び出します。

上記のように送信したデータでうまく機能します。しかし、私が次のようなデータを与えるとき:

$ascii ="2010/2012";

までのみ2010/変換されます。以降のデータ/は省略しています。関数に渡す完全なデータを変換するにはどうすればよいですか?

4

2 に答える 2

3

これはおそらくあなたのコードが奇妙に振る舞う理由を説明していませんが、あなたはあなたの関数全体を次のように書き直すことができます:

function ascii_to_dec($str) {
    return array_values(unpack('C*', $str));
}

アップデート

function ascii_to_dec($str) {
    return join('', unpack('C*', $str));
}
于 2012-05-26T16:02:03.877 に答える
0

問題を見つけました。$dec_arrayはメモリの問題に悩まされていると思います。2010/2012の10進数に相当するものは「504849484750484950」です。しかし、$ newvarは、実際には2010/の504849484までしか取得できません。

私のコードを以下に変更しました、

function ascii_to_dec($str)
{
echo $str."<br />";
echo strlen($str); echo "<br />";
for ($i = 0, $j = strlen($str); $i < $j; $i++) {
$temp = ord($str[$i]);
$decimal="$decimal"."$temp";
}
return $decimal;
}

これで、テキストとして返されます。

于 2012-05-26T16:21:15.303 に答える