我使用以下函数将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/
。省略/
之后的数据。如何转换我传递给函数的完整数据?
答案 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;
}
现在它以文本形式返回。