2012-05-26 61 views
0

我用這個下面的函數ASCII轉換爲十進制後不工作:ORD()斜槓

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/被轉換。省略/後的數據。如何將我傳遞給函數的完整數據進行轉換?

+1

我試過你的代碼,結果如預期。 – flowfree

回答

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

現在返回爲文本。

+0

我很肯定你沒有在你的問題中顯示完整的代碼。請參閱我的答案,瞭解相同但較短的解決方案 –

3

這可能並不能解釋爲什麼你的代碼行爲異常,但是你可以重寫你的整個功能:

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

更新

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