Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : char array in hex werten ausgeben ...



Alex_K
20-12-2002, 13:20
ich hab ein char array, und will dür jedes zeichen den dazugehörigen hexwert ausgeben,
ich habs jetzt mal so versucht:



void print_hex(char* bytes, int length)
{
for (int i = 0; i < length; i++)
{
cout.width(2);
cout.fill('0');

cout << hex << (int)bytes[i] << " ";
if ( (i+1)%16 == 0)
cout << endl;
}
cout << endl;
}


nun wird aber ein wert der ff als ffffffff ausgegeben (der char werk kann ja gar nicht so groß sein).
wenn ich das (int) weg lasse werden wieder nur die zeichen ausgegeben ...

Boron
20-12-2002, 13:53
Das Problem liegt meines Erachtens in dem cast (int)bytes[i].
Du machst aus einem 8 Bit Wert (char) einen 32 Bit Wert (int).

Das ist der Grund warum "cout << hex" dann ffffffff (entspricht 32 Bit) anzeigt anstatt nur ff (enspricht 8 Bit).
Mach also (int) weg, dann sollte es klappen.

Alex_K
20-12-2002, 14:05
wie schon gesagt:

wenn ich das (int) weg lasse, werden wieder die entsprechenden zeichen ausgegeben, und keine hex werte ...

noch wetwas is mir aufgefallen:

if ( bytes[i] == 0xff )
{
...
..
.
}

bei deser auswahl wird auch nie 0xff gefunden (obwohl solche were dabei sind).

und der compiler gibt folgende warnung:

f35lib.cpp:190: warning: comparison is always false due to limited range of data type

anda_skoa
20-12-2002, 14:18
Hmm, probier mal



cout << hex << (0xFF & (int)bytes[i]);


Ciao,
_

Alex_K
20-12-2002, 14:31
thx,

problem gelöst ...:)