0

我使用以下函数将 ASCII 转换为十进制:

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";

只有 up to2010/被转换。后面的数据/省略。如何转换我传递给函数的完整数据?

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 的十进制等效值为“504849484750484950”。但是 $newvar 只能达到 504849484,这实际上是 2010/ 的。

将我的代码更改为以下,

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 回答