Мне нужно преобразовать целое число в 4-байтовый (32-битный) гекс для отправки его как ACK на устройство, которое я сейчас пытаюсь интегрировать.
Например
3 = 00000003
15 = 0000000F
Проверьте http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html
1. Выберите подписанный 32 бит из выпадающего
2. Введите значение в текстовом поле decomal
3. Проверьте значение в шестнадцатеричном поле.
Я использую функцию php pack с этим параметром, но, судя по ответу устройства, это не совсем правильный подход.
$reply = pack(L*,$num);
Это правильный параметр или есть какой-то другой способ.
Пожалуйста, suuggest.
я бы сделал
$a = 15;
var_dump( sprintf("%08X", $a) );
$a = 3;
var_dump( sprintf("%08X", $a) );
это выводы
string(8) "0000000F"string(8) "00000003
08X
означает создать строку из 8 символов, дополненную 0
(если необходимо) с аргументом, который рассматривается как шестнадцатеричный. (Заглавные буквы)
так в вашем примере
$reply = sprintf("%08X", $num)
Других решений пока нет …