2011-06-12 38 views
1

我要求用戶從1 - 9和a-f輸入4個數字或字母。使用ltrim();從我的用戶輸入開始處拿走'0'

然後我把這些數字和字母和str_replace他們與4字節值。

因此,如果用戶輸入00FF,該值將是0000 0000 1111 1111,作爲00000 4字節值和1111F 4字節值。

我想從總共4個字節的值中排除任何領先的'0's

我已經嘗試使用下面的代碼來擺脫從它的開始0。

$hexvalue2 = ltrim($hexvalue,'0'); 
echo $hexvalue2; 

但是,當看到PHP.net時,根據我的知識,這看起來不錯,但顯然不是這樣。

任何人都可以告訴我哪裏錯了嗎?或者可能提出一個替代方案

謝謝

+3

'00001111'不是字符串。 – 2011-06-12 20:59:21

+0

是的,我知道,你可以提供任何替代方法嗎? – RSM 2011-06-12 21:01:37

+0

'$ hex' /'$ hexvalue'?你會得到什麼輸出? – Gumbo 2011-06-12 21:02:56

回答

1

這工作:

<? 
$h = 0x00001111; 

$h = ltrim(dechex($h),"0"); 

echo $h; 
?> 

輸出:1111

注意dechex得到一個字符串。

+0

參考更新。我很模糊 – RSM 2011-06-12 21:14:22

+1

我很困惑,你接受了,但問題改變了嗎? – trutheality 2011-06-12 21:19:08

+0

,因爲我修改了我的代碼以適合您的建議。如果你喜歡,我可以不接受? – RSM 2011-06-12 21:34:34

0

它爲我的作品:

$hexvalue = '00001111'; 
$hexvalue2 = ltrim($hexvalue,'0'); 
echo $hexvalue2; 
//prints 1111 

確保$hexvalue是一個字符串,而不是任何其他類型。

+0

是指更新的問題,我之前非常含糊。道歉 – RSM 2011-06-12 21:14:37

1

我將修改將00FF轉換爲0000 0000 1111 1111的函數,以便它在輸入字符串的開頭不會添加0000

<?php 
function convert4byte($in) { 
    $in = preg_replace('/^0+(.*)/', '$1', $in); 
    $out = ''; 
    $i = 0; 
    do { 
     $out .= sprintf('%04d', decbin(hexdec($in[$i]))); 
     $i++; 
    } while ($i < strlen($in) && $out .= ' '); 
    return $out; 
} 
$str = '00FF'; 
echo convert4byte($str); 
?> 

http://codepad.org/eCmhOpAO