正如标题所说,如果十六进制值包含"0X"或"00"值,则末尾的输出将无法正确显示。有谁知道它的解决方法?(我正在学习PHP,所以请更详细,而不是简短的解释)。
<div id="hex_rgb_calc">
<form action="" method="post">
<input type="text" name="Hex" value="#"><br>
<input type="submit" name="submit" value="CALCULATE">
<?php
if(isset($_POST['Hex']))
{
$hex = $_POST['Hex'];
list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
$decRCALC = (dechex($r));
$decGCALC = (dechex($g));
$decBCALC = (dechex($b));
$decRCALC = strtoupper($decRCALC);
$decGCALC = strtoupper($decGCALC);
$decBCALC = strtoupper($decBCALC);
?>
<div id="separator">
</div>
<?php
echo "<br>1. Input: <br>$hex<br>";
echo "<br>2. Output (Dec): <br>$r $g $b<br>";
echo "<br>3. Custom (GB>R): <br>$decGCALC$decBCALC$decRCALC<br>";
}
?>
</div>
举个例子:
输入十六进制"020255"并将其转换为我需要的十六进制设置(在本例中为 GBR,而不是 RGB)应将其输出为值"025502",但实际输出为"2552",缺少零 (0) 值,正在切割。
有谁知道如何解决这个问题?我检查了我的 HTML 和 CSS 文档,我找不到任何类型的声明,这些声明会在计算过程中明显删除该值。
编辑:有没有办法以相应的颜色显示十六进制值? :)
dechex
函数不会将十六进制字符串归零。 你必须自己做。
例如:
$decRCALC = str_pad(dechex($r), 2, '0', STR_PAD_LEFT);