Hola amigo !
No te preocupes... pa' eso estamos
En realidad la linea que hace todo para enviar el string a su posicion en el array of byte, es esta:
arreglo[i-1]:= strtoint('$'+envia);
Si te fijas, lo que hace son dos cosas fundamentalmente:
1. Concatena al string que está leyendo el signo de '$' que es el símbolo de un hexadecimal,
ejemplo: el FF lo hacemos $FF
2. Convierte el string ya con el símbolo '$' a un entero y de esta manera el arreglo lo acepta sin problemas.
El resto del código son manipulación de cadenas para ir recorriendo, extrayendo y recortando la cadena original en cada iteración, por eso, hacemos uso de una variable aux que en realidad es la que manipulamos...
Espero me haya explicado :$, si no, pregunta con confianza
Saludox !