斜线后,ord()不起作用

时间:2012-05-26 15:37:55

标签: php decimal ascii

我使用以下函数将ASCII转换为Decimal:

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/。省略/之后的数据。如何转换我传递给函数的完整数据?

2 个答案:

答案 0 :(得分:3)

这可能无法解释为什么你的代码行为异常,但你可以将整个函数重写为:

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

<强>更新

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

答案 1 :(得分: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;
}

现在它以文本形式返回。