Seite 1 von 1

Werte binär ausgeben

Verfasst: 11. Juli 2008 19:43
von butze
hi!


ich hab ein eher generelles C++ Problem.

Und zwar lese ich aus einem FPGA 32 Bit (U32) Werte, die ich in einem Struct speichere:

Code: Alles auswählen

typedef union _U32TOBYTE
{
	UINT reg;
	struct regs
	{
		unsigned char byte1		: 8;
		unsigned char byte2		: 8;
		unsigned char byte3		: 8;
		unsigned char byte4		: 8;
	} regs;
} U32TOBYTE; 

Diese Werte packe ich element-weise in ein unsigned char[] Array:

Code: Alles auswählen

data[i*4]   = U32TOBYTE_VALUE.regs.byte1;
data[i*4+1] = U32TOBYTE_VALUE.regs.byte2;
data[i*4+2] = U32TOBYTE_VALUE.regs.byte3;
data[i*4+3] = U32TOBYTE_VALUE.regs.byte4;

Diese Werte möchte ich unverändert hexadezimal ausgeben lassen.

Über

Code: Alles auswählen

printf("0x%02X%02X%02X%02X\n", data[i*4], data[i*4+1] ,data[i*4+2] ,data[i*4+3]);
klappt das soweit auch.

Mit

Code: Alles auswählen

qtext.append(QString::number(data[i],16));
kann ich auch auf ein qtextedit Fenster ausgeben.


Aber das kommt mir viiiel zu umständlich vor. Habe mittlerweile stundenlang gegoogled, CPP und QT Refs gelesen, finde aber dennoch keine bessere Varianten. Darüber hinaus nutze ich sonst im Programm nur STD::cout ausgaben - aber damit werden die 8 bit char werte immer implizit in 32 bit werte umgewandelt ...

Wisst ihr schönere Wege?


edit:

mir ist gerade aufgefallen, dass 0x"0" aus der Hardware (also 4 hintereinanderfolgende Nullen) ignoriert werden.
wenn in der HW beispielsweise 0x"AA00BBCC" steht und ich es auslese, bekomme ich 0x AABBCC... warum?

Verfasst: 12. Juli 2008 10:56
von solarix
Werte binär ausgeben
Titel ist falsch.. du möchtest (wie du schon selbst festgestellt hast) die die Werte in hex ausgeben, nicht "binär".
Aber das kommt mir viiiel zu umständlich vor
was ist den an einem printf oder QString() "umständlich"? Was hättest du den gerne?
wenn in der HW beispielsweise 0x"AA00BBCC" steht und ich es auslese, bekomme ich 0x AABBCC... warum?
Mit welcher Ausgabe (printf bestimmt nicht...) denn? Code?