问题描述
||
我要求用户输入1-9和a-f中的4个数字或字母。
然后,我将这些数字和字母取为“ 0”,并加上4个字节的值。
因此,如果用户输入
00FF
,则值将为0000 0000 1111 1111
,因为0000
是0
的4个字节的值,而1111
是F
的4个字节的值。
我想从4字节值的总集合中除去任何前导ѭ7。
我尝试使用以下代码从一开始就摆脱了0 \。
$hexvalue2 = ltrim($hexvalue,\'0\');
echo $hexvalue2;
但是,这不起作用,据我所知,在看PHP.net时,这似乎是正确的,但显然不是。
谁能告诉我我要去哪里错了?或建议替代方案?
谢谢
解决方法
这有效:
<?
$h = 0x00001111;
$h = ltrim(dechex($h),\"0\");
echo $h;
?>
输出:1111
注意ѭ11以获得字符串。
, 我将修改将00FF
转换为0000 0000 1111 1111
的函数,以便在输入字符串的开头不出现0的情况下不添加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
, 这个对我有用:
$hexvalue = \'00001111\';
$hexvalue2 = ltrim($hexvalue,\'0\');
echo $hexvalue2;
//prints 1111
确保$hexvalue
是字符串,而不是其他任何类型。