c++: long to const char*

Theodore Lytras thlytras at gmail.com
Thu Sep 27 14:01:27 EEST 2012


Στις Πεμ 27 Σεπτ 2012, γράψατε:
> On Thu, Sep 27, 2012 at 1:04 AM, Theodore Lytras <thlytras at gmail.com> wrote:
> > Καλησπέρα,
> > 
> > ποιός είναι ο σωστός τρόπος να μετατρέψει κανείς ένα long (4 bytes) σε
> > ένα const char * ??
> > 
> > Ευχαριστώ,
> > Θοδωρής
> 
> Τι θέλεις να πετύχεις;
> 
> Γιατί→Τι→Πως
> (Αγγλιστί: Why→What→How)
> 
> Μας ρωτάς το Πως, έχεις βρει το Τι, αλλά για να σου απαντήσουμε σωστά
> πρέπει να ξέρουμε και το Γιατί.
> 
> Τάσος Μπασούκος

Σωστό. 

Είναι πολύ απλό: η εφαρμογή μου (που είναι σε C++/Qt) κάνει output κάποια 
table-like δεδομένα σε ένα binary αρχείο καθορισμένου format (.dta - βλέπε 
http://www.stata.com/help.cgi?dta).

Μέσα στο αρχείο αυτό, μεταξύ άλλων, αποθηκεύονται και αριθμητικά δεδομένα, 
π.χ. το πλήθος των εγγραφών της βάσης, το οποίο ορίζεται σαν ακέραιος μήκους 
τεσσάρων bytes.

Εγώ θέλω να γράψω τον αριθμό αυτό στο αρχείο. Όμως το method που προσφέρει η 
Qt για το σκοπό αυτό (QIODevice::write()) δέχεται τα δεδομένα σε const char *. 
Άρα εγώ πρέπει να μετατρέψω τα δεδομένα αυτά σε const char * με τον σωστότερο 
δυνατό τρόπο.

Ήδη έχω βρεί έναν τρόπο, ο οποίος όμως μου βρωμάει:

long num = 123456;
QByteArray::fromHex( QByteArray::number(num, 16) );

που μετατρέπει το num σε δεκαεξαδικούς χαρακτήρες ASCII, και αυτούς στη 
συνέχεια σε bytes έτοιμα για να τα γράψω στο αρχείο.

Σκέφτηκα λοιπόν οτι δε μπορεί, κάτι πιο απλό θα υπάρχει... Ένα cast ίσως? Δε 
μπόρεσα να βρώ κάτι όμως που να είμαι και σίγουρος οτι είναι αυτό που θέλω...

Ελπίζω τώρα είναι πιο σαφές. Any ideas?

Ευχαριστώ,
Θοδωρής

Υ.Γ: Η Qt μπορεί να συνδυαστεί και με τη C++ standard library, δε θα ήθελα 
όμως να προσθέσω ένα τέτοιο dependency στην εφαρμογή για κάτι τέτοιο...

-- 
"Beauty is transitory."
"Beauty survives."
        --  Mr. Spock & Capt. Kirk, "That Which Survives", stardate unknown
by Theodore Lytras <thlytras at gmail.com>


More information about the Linux-greek-users mailing list