Я очень новое лицо в PHP. Я прочитал это dechex(255)
даст соответствующее шестнадцатеричное значение ff
в PHP.
Мне нужно шестнадцатеричное значение -105
, Я старался dechex(-105)
и получил результат как ffffff97
, Но я просто хочу только 97
делать какие-то вещи.
В Java я знаю, что немного мудрая операция с 0xff
дал нам результат 97
то есть (byte)-105 & (byte)0xff = 0x97
,
Пожалуйста, найдите решение в PHP так же, как я делал в Java.
Вы можете сделать это в php следующим образом:
var_dump(dechex(-105 & 255))
сделать его из последнего байта (пример вывода ниже)
string(2) "97"
dechex () дает шестнадцатеричное значение для десятичного значения от 0 до 2 * PHP_INT_MAX + 1 (без знака int).
Все, что ниже 0 или выше 2 * PHP_INT_MAX + 1, будет зациклено.
-105 это НЕ 0xffffff97, и это не 0x97
0xffffff97 — 4294967191.
и 0x97 — 151.
Если вы хотите, чтобы шестнадцатеричное представление отрицательного числа превратилось в положительное число, используйте функцию abs()
,
$abs = abs(-105); // $abs becomes +105
$hex = dechex($abs); // $hex becomes 69
Либо вы хотите двоичное отрицательное значение (ffffff97) или значение со знаком
// for a signed value
$i = -105;
if($i < 0)
echo '-'.dechex(abs($i));
else echo dechex($i);
Если вы хотите удалить переднюю «F»
echo preg_replace('#^f+#', '', dechex($i));