0

PHP RGB から HEX へのコンバーターを作成しようとしていますが、RGB 数値が 10 から 15 の間の場合、RGB 数値を文字に変換する関数を使用しようとしています (いいえ、"dechex( )" 関数)。これは私が今それをコーディングした方法です:

function convToHex(&$hexInt)
{
    switch($hexInt){
        case 10:
            $hexInt = "A";
            break;
    }
}

//create six hexadecimal variables for "hexMain"

$hex1 = intval($r / 16);
$hex2 = $r % 16;
$hex3 = intval($g / 16);
$hex4 = $g % 16;
$hex5 = intval($b / 16);
$hex6 = $b % 16;

$rgb = "#" . $r . $g . $b;

echo convToHex($hex1);

問題は、エコーしようとすると値が 0 になることです。「dehex()」を使用せずに「$hex1」、「$hex2」などを変換する最良の方法は何でしょうか?

4

2 に答える 2

1

あなたの問題はこの行にあります:

echo convToHex($hex1);

参照渡しする場合は、関数を呼び出して変数を変更してから、エコーする必要があります(関数は変更した値を返さないため)。

convToHex($hex1);
echo $hex1;

...また、次のようなものを使用しない理由:

function rgb2hex($r, $g, $b) {
  return sprintf("#%02X%02X%02X", $r, $g, $b);
}

または、元のロジックに近いものが必要な場合:

function rgb2hex($r, $g, $b) {
  // takes ints $r, $g, $b in the range 0-255 and returns a hex color string
  $hex_digits = "0123456789ABCDEF";
  $hex_string = "";

  $hex_string .= substr($hex_digits, $r / 16, 1);
  $hex_string .= substr($hex_digits, $r % 16, 1);
  $hex_string .= substr($hex_digits, $g / 16, 1);
  $hex_string .= substr($hex_digits, $g % 16, 1);
  $hex_string .= substr($hex_digits, $b / 16, 1);
  $hex_string .= substr($hex_digits, $b % 16, 1);

  return "#" . $hex_string;
}

これらのいずれかを使用するには、次のようなものが含まれます。

$r = 12;
$g = 234;
$b = 45;

$hex_string = rgb2hex($r, $g, $b);
echo $hex_string . "\n";
于 2012-04-15T00:23:39.940 に答える
1

関数で値 (この場合は $hexInt) を返す必要があります。次に、参照を操作する必要はありません。

function convToHex($hexInt) {
    // do things
    return $hexInt;
}

echo convToHex($hexInt);
于 2012-04-15T00:14:39.433 に答える