HEX 2 ASCII

V2oD2o

Новичок
Всем привет, посколько ранее не сталкивался с такой потребностью - напишу в эту ветку)

Собстенно по сети гуляет такой код:
PHP:
function Hex2String($hex) {
$string='';
for ($i=0;$i<strlen($hex)-1;$i+=2){
$string.=chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}

Собственно знаем что в двух символах 16й системы исчисления - 255 значений 00-FF, как собственно и в таблице ASCII, HEX
Приводить табличку смысла не вижу, ее знает каждый

Есть девайс на COM порте, библиотека serial.class.php, в девас надо писать символами ASCII
Поскольку параметры у девайса в двоичной системе, то самый удобный вариант использование HEX при программировании, кто работает с микроконтроллерами - тот поймет о чем я..

Включение устройства 0h05 выключение 0h81

Так вот, если Hex2String($x) при $x=00..7F - все работает хорошо, а вот следующий разряд - $x=80 в устройство пишется 0h00 и так далее, как будто по кругу пошло 81 = 01, 82 = 02 и т.п.

что за шутка такая ?
 

fixxxer

К.О.
Партнер клуба
ващет есть функция hex2bin, начиная с php 5.4.

смысла в каких-то там странных классах я тоже не вижу, сетапишь свой порт командой stty и потом работаешь с /dev/tty* обычными файловыми функциями.
 

antson

Новичок
Партнер клуба
@V2oD2o, у меня функция отработала правильно.
сделай у себя
echo Hex2String('8182');
если старший бит уже здесь сброшен, то смотри кодировку по умолчанию. забыл как точно она называлась, возможно у тебя 7-ми битная по умолчанию.
 
Сверху