2011-06-12 40 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