PHP, преобразовать в шестнадцатеричное целое - PullRequest
1 голос
/ 14 апреля 2011

My $_POST значение содержит css-дружественное шестнадцатеричное значение цвета, например: #ffffff.Чтобы сделать его дружественным к библиотеке ColorJizz , я должен иметь его в шестнадцатеричном целочисленном значении.Код ниже не работает.Если я заменим переменную $color_hex жестко закодированным значением, например: 0xffffff, это сработает.

include('colorjizz.php');   
$color_hex = '0x' . substr($_POST['color'], 1); 
$color = new Hex($color_hex);

Это, скорее всего, проблема с уровнем нуба, но после удара головой о стенув течение нескольких часов я был бы благодарен за любой совет.Спасибо.

Ответы [ 3 ]

1 голос
/ 14 апреля 2011

Если у вас есть строка, содержащая шестнадцатеричное представление числа, и вы хотите, чтобы она была целым числом, вы должны преобразовать ее из шестнадцатеричного в десятичное.Если я правильно понял ваш вопрос.

$dec = hexdec("ff0000");

http://php.net/hexdec

1 голос
/ 14 апреля 2011

«Шестнадцатеричное целое значение» не имеет особого смысла. Шестнадцатеричное представление представляет собой число (то есть строку), а целочисленное значение говорит о машинном формате числа.

Если вам нужен номер, быстрый поиск в Google найден hexdec

$color = hexdec(substr($_POST['color'], 1));

Кажется, он игнорирует ведущий "мусор", так что вы даже можете использовать

$color = hexdec($_POST['color']);
0 голосов
/ 14 апреля 2011

В PHP тип данных для шестнадцатеричного и десятичного целых чисел одинаков; возможность набрать 0xDEAD в вашем исходном коде - просто синтаксический сахар. Таким образом, вы можете использовать intval() для преобразования ввода формы в обычное целое число PHP из строки:

$color_hex = intval(substr($_POST['color'], 1), 16);

Последний параметр 16 указывает, что входная строка имеет шестнадцатеричное значение.

...