2024-12-11 22:36:38 +00:00
# include <fstream>
# include <iostream>
template < typename typ1 >
typ1 readFromStream ( std : : ifstream & stream , char * dest ) {
if ( stream . is_open ( ) ) {
stream . read ( dest , sizeof ( char [ 1024 ] ) ) ;
typ1 * ptr = reinterpret_cast < typ1 * > ( dest ) ;
return std : : move ( * ptr ) ;
}
else {
std : : runtime_error ( " Could not read from File! " ) ;
}
}
void Aufg9Main ( ) {
char * dest = new char [ 1024 ] ;
try {
std : : string fileName = " ../Aufg9/IO-Files/charakter.d2s " ;
std : : ifstream stream ( fileName ) ;
2024-12-11 23:19:19 +00:00
readFromStream < long > ( stream , dest ) ;
2024-12-11 22:45:28 +00:00
2024-12-11 23:01:55 +00:00
// Name
char * byte20 = & dest [ 20 ] ;
std : : cout < < " Name: " ;
2024-12-11 22:45:28 +00:00
for ( int i = 0 ; i < 16 ; i + + ) {
2024-12-11 23:19:19 +00:00
// std::cout << byte20[i];
std : : cout < < dest [ 20 + i ] ;
2024-12-11 22:45:28 +00:00
}
2024-12-11 23:01:55 +00:00
std : : cout < < std : : endl ;
2024-12-11 23:07:26 +00:00
// Status
2024-12-11 23:01:55 +00:00
char * byte36 = & dest [ 36 ] ;
2024-12-11 23:07:26 +00:00
std : : cout < < " Status: " < < ( ( ( int ) ( * byte36 ) ) % 8 ) / 4 < < std : : endl ; // geh zu Byte 36, lies genau 1 byte, interpretiere es als int, berechne mod 8 -> wegwerfen der linken Bits, /4 -> wegwerfen der rechten beiden Bits -> Tada, nur das 3. Bit von Rechts bleibt übrig
2024-12-11 23:19:19 +00:00
// 0 -> Player is not HardCore?
2024-12-11 23:01:55 +00:00
// Klasse
bool * byte40 = ( bool * ) & dest [ 40 ] ;
std : : cout < < " Klasse: " < < byte40 [ 0 ] < < std : : endl ;
// 2 -> Necromancer
2024-12-11 22:45:28 +00:00
2024-12-11 23:07:26 +00:00
// Level
bool * byte43 = ( bool * ) & dest [ 43 ] ;
std : : cout < < " Level: " < < byte43 [ 0 ] < < std : : endl ;
2024-12-11 22:36:38 +00:00
} catch ( const std : : exception & e ) {
std : : cout < < e . what ( ) < < std : : endl ;
}
}