Hei!
Tämä on teille konkareille varmaan ihan äärettömän helppo juttu, mutta itse en osaa sitä rakentaa ilman avustusta.
On dataa muodossa \0C#\0E\C4\0D\F7\0D\16\0Em ja tuo pitäisi saada inhimillisempään muotoon. \-merkin jälkeen kaksi seuraavaa merkkiä on heksaa, jotka pitäisi kääntää normaaleiksi kymmenluvuiksi, sitten saattaa olla jotain muuta merkkiä, joka ei ole heksaa ja se pitäisi vain tulostaa pötköön mukaan, ja sitten tulee taas \ ja käännettävää.
\-merkkiä ei saisi tulostaa mukaan, se on vain merkkinä heksan alkamiselle.
En pyydä toki valmista ohjelmaa, vaan vinkkejä, kuinka te tuollaisen toteuttaisitte. Tutkitaanko mössöä merkki merkiltä vai onko käytännöllisempikin tapa? Mössöä on paljon.
Merkki merkiltä tutkiminen on ihan hyvä tapa. Jos merkki on \, luetaan vielä kaksi seuraavaa merkkiä, jotka täytyy muuttaa kymmenjärjestelmään ennen tulostamista. Jos merkki on jokin muu, tulostetaan se sellaisenaan.
Kymmenjärjestelmään muunnos onnistuu helposti: kerrotaan ensimmäinen numero 16:lla ja lisätään jälkimmäinen numero tulokseen. Aakkoset pitää tietysti muuttaa numeroiksi ennen laskemista (A = 10, B = 11, ..., F = 15).
Tuolla pitäisi (en jaksanut testata toimiiko) saada suoraan heksaluku intiksi charribufferista ilman turhaa laskemista:
char szHex[16]; // heksaluku tänne muodossa 0xFF.. int iLuku; sscanf(szHex, "%x", &iLuku);
Toimii ainakin toisinpäin (sprintf:llä intti heksana charribufferiin).
Aihe on jo aika vanha, joten et voi enää vastata siihen.