Ho inserito questo codice che fa quello che dovrebbe fare, ma forse c'è un approccio migliore o più generale? Sto convertendo un numero di base 10 a 4 cifre, ad es. "11" alla base 16, ad es. "17" (che viene scritto sul display come 11 quando chiamato con 17 perché la funzione accetta bit come argomento).
int hex1 = perhapsprime / 1000;
int hex2 = (perhapsprime - hex1*1000) / 100;
int hex3 = (perhapsprime - hex2*100 -hex1*1000) / 10;
int hex4 = perhapsprime - hex3*10 - hex2*100 - hex1*1000;
int test = 16*16*16*hex1+16*16*hex2+16*hex3+hex4;
Il numero intero "test" avrà il valore corretto dopo l'esecuzione di questo codice, ma esiste un modo più efficiente per farlo?
Aggiornamento
Ho optato per quanto segue che sembra essere in grado di convertire qualsiasi numero di cifre in BCD:
int tbcd(int v) {
int total = 0;
int resultbase = 1;
while(v > 0) {
total += resultbase * (v % 10);
resultbase *= 16;
v /= 10;
}
return total;
}