[C][C++]Big/Litlle endian jak sprawdzić ??
Ostatnio zmodyfikowano 2017-02-16 20:32
aaadam Temat założony przez niniejszego użytkownika |
[C][C++]Big/Litlle endian jak sprawdzić ?? » 2017-02-16 19:32:20 Witam, mam pytanie co do endianów, jak sprawdzić endianowość na danym sprzęcie ?? czy ta funkcja zwróci prawidłowy wynik??? proszę o pomoc. void ByteOrderTest() { volatile short int x = 0x1234; if( x & 0x01 ) cout << "litlle endian"; else cout << "big endian; }
|
|
jankowalski25 |
» 2017-02-16 20:02:14 |
|
pekfos |
» 2017-02-16 20:03:58 czy ta funkcja zwróci prawidłowy wynik??? |
Twoja funkcja nie ma żadnego sensu. |
|
aaadam Temat założony przez niniejszego użytkownika |
» 2017-02-16 20:06:16 dziękuję <3 union { int i; char c[ sizeof( int ) ]; } x; x.i = 1; if( x.c[ 0 ] == 1 ) printf( "little-endian\n" ); else printf( "big-endian\n" );
może ktoś wyjaśnić dlaczego to niby zadziała ??? |
|
jankowalski25 |
» 2017-02-16 20:17:15 A czego konkretnie nie rozumiesz? Unii? Unia w C++1. Tworzysz unię, w której umieszczasz liczbę całkowitą oraz tablicę znaków. 2. Zapisujesz wartość 1 do unii. W pamięci wygląda to tak: I teraz sobie odczytujesz pierwszy znak. Rozumiesz? |
|
aaadam Temat założony przez niniejszego użytkownika |
» 2017-02-16 20:32:29 tak, dzięki wielkie :) |
|
« 1 » |