Quand tu sauras ce que tu veux faire je pense que tu auras bien progressé !
j'ai envie de te dire pourquoi ne reste tu pas en binaire ? si c'est pour gagner des "octets" c'est un débat dépassé et il faut rester en binaire, car les conversions binaire => hexa => binaire sont très pénalisantes en temps CPU
Remarque que ton binaire n'a que le nom de la variable $bin comme AOC ! si je mets $dec à la place ce sera du décimal ! on est bien d'accord. PHP manque de discernement dans les types de variable et ça ne simplifie pas la tâche.
Ceci étant dit :
nous appellerons OCTET une zone mémoire de 8 bits consécutifs,chaque bit valant 0 ou 1 (base binaire ou 2)
cet octet peut se représenter en 2 groupes de 4 bits consécutifs, chaque groupe ayant donc 16 symboles possibles d'où appellation hexadécimale (base 16) symboles 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
exemple 00000001 <=> 01, 00010001 <=> 11, 00110012=AB, jusqu'au maximum 11111111<=>FF
Donc si tu veux "passer" des "octets" il faut que strlen($bin)=q*8 et ta chaine sera du genre $hex = bin2hex(chr(00000010)).bin2hex(chr(00000000)).bin2hex(chr(00000000)).bin2hex(chr(00000111)).bin2hex(chr(00000110)) après avoir ajouté le nombre adéquat de 0 en début.
Remarquer que le contenu de $hex=0800004948 n'est pas la conversion de $bin mais la traduction hexa de chaque octet l'un après l'autre.
Noter aussi que je doute que l'instruction convert, que tu utilises, n'explose pas appliquée à 8500 bits, ou rende une bonne valeur, après décodage par le module récepteur !
J'ai l'intention de fouiller un peu plus le sujet ...