mmm allora, con questo codice mi funziona, però non ho ancora capito quello che intendi. magari funziona solo per un caso e sto continuando ancora a sbagliare.
codice:
void decToEsL (int a, Listchar *l){
	Listchar temp;
	char dict[]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
	if (a)
		while (a){
			temp=malloc(sizeof(Listchar));
			temp->info = dict [a%16];
			temp->next=*l;
			*l=temp;
			a=a/16;
		}
	else{
		temp=malloc(sizeof(Listchar));
		temp->info = '0';
		temp->next = NULL;
		*l=temp;
	}
}