1

次のような文字列に16進カラーコードがあるとします。

$color = '#fda80d';

これを次のような実際の16進値に変換するにはどうすればよいですか。

$color = 0xfda80d;

文字列ではなく実際の16進値になるように?

4

5 に答える 5

2
$color = '#fda80d';
$color = hexdec(substr($color, 1));

// Prove it
echo $color == 0xfda80d ? "yes" : "failed";
于 2012-05-22T18:08:37.477 に答える
1

次のコードは、PHPが数値を基数10として格納していることを示していますが、任意の基数の数値を計算できます。以下にデモを作成しました。これを使用して、異なる基数の数値を相互に比較する方法について、より良いアイデアが得られるはずです。さまざまな基数の数値を計算することもできます。

<?php
$color = '#fda80d'; //String color
$color = substr($color,1,6); //String color without the #

$color = '0x'.$color; //Prepend the 0x
$color += 0x00; //Force it to be a number

if($color === 0xfda80d) //Check the number is EXACTLY what we are expecting
    echo 'Is hex<br />'; //This code is run, proving it is a hex ***number***

echo $color; //Outputs 16623629 (base 10)

#================================#

echo '<br /><br />';

$octal = 011; //Define an octal number
$octal += 01; //Add 1

if($octal === 012)
    echo 'Is octal<br />';

echo $octal; //Outputs 10 (base 10)

#================================#

echo '<br /><br />';

$number = 12345; //Define a standard base 10 int
$number += 1; //Add 1 to the int

if($number === 12346)
    echo 'Is base 10<br />';

echo $number; //Outputs 12346 (base 10)


#================================#

echo '<br /><br />';

if($color === 16623629 && $color === 077324015 && $color === 0xFDA80D)
    echo '$color is base 10, octal and hex all at the same time<br />';

if($octal === 10 && $octal === 012 && $octal === 0xA)
    echo '$octal is base 10, octal and hex all at the same time<br />';

if($number === 12346 && $number === 030072 && $number === 0x303A)
    echo '$number is base 10, octal and hex all at the same time';
?>

出力:

16進数です

16623629

8進数です

10

10進数です

12346

$ colorは、基数10、8進数、16進数です。

$ octalは基数10、8進数、16進数です。

$ numberは基数10、8進数、16進数です。

たとえば、基数10の数値(または16進数/ 10進数)が、変換なしでその場で1016進数に等しいことを確認できます。0xA

<?php
if(10 === 0xA)
    echo 'Success'; //This code is run
?>
于 2012-05-22T18:13:55.667 に答える
0

PHPのbin2hex()を調べることができます。http://php.net/manual/en/function.bin2hex.php

于 2012-05-22T18:07:55.787 に答える
0

var_dump(dechex(hexdec(str_replace('#', '', '#fda80d'))))0xfda80dは文字列なので、書いたように取得する方法はおそらくありません。

于 2012-05-22T18:20:35.937 に答える
0

もう1つのオプションは、便利なsscanf()機能を使用することです。

sscanf($color, '#%06x', $color);
于 2012-05-22T19:35:26.350 に答える