folgender Code:
System.IO.MemoryStream binaryStream = new System.IO.MemoryStream();
System.IO.BinaryWriter writeALLTheThings = new System.IO.BinaryWriter(binaryStream);
byte ff = 0xFF;
byte dreinull = 0x30;
byte fe = 0xFE;
byte[] nullen = new byte[16] {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10};
writeALLTheThings.Write(ff);
writeALLTheThings.Write(dreinull);
writeALLTheThings.Write((Int32)(message.Length));
writeALLTheThings.Write((UInt32)3);
writeALLTheThings.Write(nullen, 0, 16);
writeALLTheThings.Write(nullen, 0, 16);
writeALLTheThings.Write(fe);
writeALLTheThings.Close();
Debug.WriteLine("Data:\n"+BitConverter.ToString(binaryStream.GetBuffer(), 0, binaryStream.GetBuffer().Length));
Zitat |
FF-30-00-00-00-01-00-00-00-03-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-FE |
Tatsächlich bekomme ich aber
Zitat |
FF-30-01-00-00-00-03-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-FE-00-00-00- und weitere 210 Nullbytes |
Daran stören mich eigentlich genau zwei Dinge:
a) warum wird an Position 3 aus meinem Integer, den ich frecherweise auch noch auf nen 32 Bit Int caste, einfach ein Byte gemacht?
Sei message.Length=256, dann heißt das Byte einfach '00', ein vorheriges Umbauen und Nutzen von UInt32 ändert auch nix, obwohl im Folgenden an Position 4 an ordentlicher Integer mit den erwarteten 4 Byte erstellt wird.
b) und wo kommt dieser Rattenschwanz an 00-Blöcken her?
Irgendwie helfen mir die zur Verfügung stehenden Dokumente in diesem Fall leider nicht weiter...
Hat jemand nen Tipp, wie ich besagte Problemchen beseitigt bekomme?