Hi Jan,
die Datei /var/Werte.txt enthält :262303dad0 und das wird mir
auch angezeigt. Lass ich nun aber in Hex ausgeben wird 32 36
usw angezeigt was eben 2 und 6 entspricht und nicht & was 26
entspricht.
OK. Ich sehe das Problem, glaube ich.
Du musst immer zwei Zeichen
zusammen betrachten, dann kommt auch
das raus, was Du möchtest,z.B.: 26 23 03 da d0
1. 26 =\> & (ASCII), 38 (dezimal), 26 (hex)
2. 23 =\> # (ASCII), 35 (dezimal), 23 (hex)
3. 03 =\> ♥ (ASCII), 3 (dezimal), 3 (hex)
4. da =\> ┌ (ASCII), 218 (dezimal), da (hex)
5. d0 =\> ð (ASCII), 208 (dezimal), d0 (hex)
Ich hab mal Deinen Quelltext geringfügig modifiziert,
arbeite Dich mal durch und schau mal, ob Du das
hinbekommst.
Grüße
CMБ
#include
#include
#include
unsigned char transfer[25][3]; // immer zwei zeichen lesen, 3'tes ist '\0'
int main ()
{
int i, n, zahl, d=0;
FILE \*fp = fopen( "werte.txt", "rt" );
if( fp != NULL ) { // pruefen ob oeffnen geklappt hat
printf ("\nDatei wurde geoeffnet\nLese ein: ");
n = sizeof(transfer[0]) - 1; // n=2: also immer 2 zeichen lesen
while ( fread(transfer[d], n, 1, fp) == 1 ) {
printf( "%c%c ",
transfer[d][0],
transfer[d][1] );
d++;
}
printf ("\n%d Bloecke a %d Zeichen eingelesen.\n", d, n);
fclose( fp );
}
// in transfer[i] stehen zwei zeichen in hex-repräsentation,
// machen wir 'binäre' werte (und anderes) daraus
for(i=0; i %c (ASCII), %4d (dezimal), %4x (hex) \n",
i+1,
transfer[i][0],transfer[i][1], // gelesene zeichen
zahl,
zahl,
zahl );
}
return 0;
}