2016-07-21 9 views
0

Vielen Dank im Voraus für die Hilfe. versucht, eine ziemlich große C/Cpp (ja ich weiß) Bibliothek zu verwenden, und in einem Fehler auftritt. Leider ist der Fehler, den ich zurückbekomme, extrem vage, aber ich weiß, welche Variable das verursacht. Alles, was ich tun möchte, ist einfach diese Variable auszudrucken, so dass ich sehen kann, was vor sich geht. Diese Variable ist jedoch kein Standardtyp. Es hat die ArtKonvertieren Sie eine Reihe von Typedefs in ein Char-Array

Opt_Int64 someVar = 10; 

wo

typedef int64_t VosT_int64; 
typedef VosT_Int64 OpT_Int64; 

Für das Leben von mir, ich kann nicht herausfinden, wie dieser Opt_Int64 Typen in einen char-Array zu konvertieren, so dass ich es ausdrucken können. Ich würde davon ausgehen, dass die folgende Funktion würde diese

void int64ToChar(char mesg[], Opt_Int64 num) { 
    for(int i = 0; i < 8; i++) mesg[i] = num >> (8-1-i)*8; 
} 

für mich tun, aber es scheint nicht (ich ein sehr einfaches Hallo Welt Stil Programm gebaut, dies zu testen) zu arbeiten. Entweder verstehe ich typedef nicht so gut wie ich sollte oder es muss etwas mit der obigen Funktion nicht stimmen. Ist typedef nicht nur eine Möglichkeit, dem Compiler mitzuteilen, dass Sie einem Typ einen anderen Namen geben?

+0

Es sieht so aus, als ob Sie (inkorrekt) versuchen, eine 64-Bit-Ganzzahl in 8 separate Ganzzahlen von jeweils 8 Bits zu konvertieren, von denen keine etwas mit einer von Menschen lesbaren Zeichenfolge zu tun hat Sie sprechen über die Verwendung von \ n und char. Wenn Sie das wollen, sind Sie in ernsthaften Schwierigkeiten. :) –

+0

Wie würden Sie ein 'int' in ein char-Array konvertieren ...? – immibis

+0

Ich würde es ein BYTE-Array nennen, wenn es nur für mathematische Operationen, vielleicht für die Verschlüsselung, aufgeteilt wäre? Das scheint er zu versuchen. Um eine druckbare Zeichenfolge zu erhalten, ist das völlig anders, und das ist in Brians Antwort enthalten. –

Antwort

3

int64_t ist ein Standardtyp, definiert in stdint.h. Sie können es wie folgt drucken:

printf("%" PRId64 "\n", someVar); 

Das Makro PRId64 und seine Verwandten sind definiert in inttypes.h.

+0

Ich muss es zuerst in ein Char-Array konvertieren, da die Bibliothek keine Standard-io-Funktion wie printf verwendet. Idealerweise überlasse ich gerne dieses char-Array der Fehlermeldung, die gerade gedruckt wird. Ansonsten muss ich etwas hacken (dh das Ergebnis in eine Datei schreiben). – Ryan

+0

Auch abgesehen von diesem Punkt, was ich habe, sollte funktionieren, wenn ich etwas triviales richtig vermisse? – Ryan

+1

@Ryan Sie können 'sprintf' verwenden dann – Brian

Verwandte Themen