byte weisse auslesen eines x beliebigen Datentypes
-
hallo erstmal
meine primäre frage ist. wie man aus einem datentyp. zb int, unsignet short, WORD usw. eine bestimmte byte stelle ausliest.
mein erster gedanke war alles in ein byte zu konvertieren. aber vielleicht kennt ja jemand eine andere lösung.
/*kommt von dem problem ein unsignet short dessen hexwert meine CRC summe in verkehrter reihenvolge ist. diese 2 hexwerte möcht ich nun umkehren^^*/
vielleicht kann mir jemand helfen oder nen lösungsansatz posten.
grets stony
-
Konvertiere es in ein ByteArray.
byte b = ((byte*)&l)[x];
-
Hi Stony,
wenn Du bei einem beliebigen Datentyp die Byte-Folge vertauschen willst, so geht das z.B. so:
#include <iostream> #include <algorithm> // reverse template< typename T > T flip( T x ) { std::reverse( reinterpret_cast< char* >( &x ), reinterpret_cast< char* >( &x ) + sizeof( T ) ); return x; } int main() { using namespace std; unsigned short s = 0x3412; cout << "0x" << hex << flip( s ) << endl; return 0; }Der Zugriff auf ein Byte an der Stelle 'i' - z.B. von 's' ist entsprechend
reinterpret_cast< char* >( &s )[i];Gruß
Werner
-
wie schön das es nich union´s gibt.