problem mit Words
-
hi..
ich hab da mal ne frage .. warum sind bei einem Word die beiten Bytes miteinander vertauscht?
schreibt man im 1. Byte rum veraendert man die ersten stellen der Zahl ...Byte data[2]={4,0}; ShowMessage(*(Word*)&data[0]); // ergibt eine 4
Byte data[2]={0,4}; ShowMessage(*(Word*)&data[0]); // ergibt eine 1024
kann man das irgendwie aendern?
-
http://www.devincook.com/goldparser/concepts/byte-ordering.htm
oder auch
http://www.cs.umass.edu/~verts/cs32/endian.html
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
-
Dazu fällt mir spontan Little Endian und Big Endian ein.
-
hm ... gibt es im borland builder auch Big-Endian variablen typen? (hab auch schon en bissel gegoogelt find aber nix derartiges)
oder kann man sich sowas selber bastelnmein eigendliches porblem ist das ich 2 verschiedene strukturen habe und ich die inhalte einerseits mit den einzelnen namen und andererseits ueber einen array auslesen will ... die daten der strukturen werden an einen microchip gesendet der leider mit Little-Endian arbeitet ...
#define s8_t Shortint #define u8_t Byte #define u16_t Word struct iodevice_basic { u8_t Data[DATA_SIZE]; }; struct iodevice_input { u8_t Options; u8_t Pin; u16_t Value; u8_t Data[2]; }; struct iodevice_ds1820 { u8_t Options; u8_t RxPin; u8_t TxPin; s8_t Temp; u8_t Time; u8_t TimeLeft; }
-
gibt es im borland builder auch Big-Endian variablen typen?
Nein, weil das vom Prozessor abhängt. Du kannst dir aber einen Typen simulieren, in dem du dir eine Klasse schreibst und dann einfach intern immer in little endian umwandelst.
-
tut mir sorry falls ich nerve .. aber
ich bin jetzt so weit ...
class TBigEn16 { public: Byte Data[2]; void operator=(Word Value) { Data[1]=*(Byte*)&Value; Data[0]=*((Byte*)(&Value)+1); } void operator=(TBigEn16 Value) { Data[0]=Value.Data[0]; Data[1]=Value.Data[1]; } };
damit kann ich dem TBigEn ein Word-wert zuweisen und ich kann dem TBigEn ein TBigEn zuweisen ...
TBigEn16 muh,maeh; muh = 0xFFFF; maeh=muh;
was jedoch nicht geht ist das ich einem Word-wert einen TBigEn zuweisen kann?
ist es ueberhaupt moeglich sowas in meinem TBigEn zu implementieren oder muss ich dazu mir einen eigenen Word-typen bauen?