[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 » |