Werte binär ausgeben

Alles rund um die Programmierung mit Qt
Antworten
butze
Beiträge: 39
Registriert: 7. Mai 2007 23:01

Werte binär ausgeben

Beitrag 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?
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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?
Antworten