Instead of:
try
{
memStream.Seek(0, SeekOrigin.Begin);
memStream.Read(arrInt1, 0, 1);
memStream.Read(arrBool1, 2, 3);
memStream.Read(arrBool2, 4, 5);
memStream.Read(arrBool3, 6, 7);
memStream.Read(arrBool4, 8, 9);
memStream.Read(arrString1, 10, 265);
memStream.Read(arrString2, 266, 521);
memStream.Read(arrBool5, 522, 523);
memStream.Read(arrBool6, 524, 525);
memStream.Read(arrBool7, 526, 527);
memStream.Read(arrCrc, 528, 529);
}
I did:
try
{
memStream.Position = 0;
memStream.Read(arrInt1, 0, 2);
memStream.Read(arrBool1, 0, 2);
memStream.Read(arrBool2, 0, 2);
memStream.Read(arrBool3, 0, 2);
memStream.Read(arrBool4, 0, 2);
memStream.Read(arrString1, 0, 256);
memStream.Read(arrString2, 0, 256);
memStream.Read(arrBool5, 0, 2);
memStream.Read(arrBool6, 0, 2);
memStream.Read(arrBool7, 0, 2);
memStream.Read(arrCrc, 0, 2);
}
I misunderstood the 'offset' and 'count' functions of
memStream.Read()
This works like it's supposed to.
I tested it with:
MessageBox.Show(memStream.Capacity.ToString() + "\n" + memStream.Length.ToString() + "\n" + memStream.Position.ToString());
And could see the 'count' was moving up all the way up to byte no. 530
At the end I was able to display data with:
MessageBox.Show(BitConverter.ToString(arrInt1) + "\n" + BitConverter.ToString(arrBool1) + "\n" + BitConverter.ToString(arrBool2) + "\n" + BitConverter.ToString(arrBool3) + "\n" + BitConverter.ToString(arrBool4) + "\n" + BitConverter.ToString(arrString1) + "\n" + BitConverter.ToString(arrString2) + "\n" + BitConverter.ToString(arrBool5) + "\n" + BitConverter.ToString(arrBool6) + "\n" + BitConverter.ToString(arrBool7) + "\n" + BitConverter.ToString(arrCrc));
And confirm every byte was correctly placed.
Thanks for the help everyone