Søges: En mere elegant løsning
Jeg ønsker at gennemløbe at byte array og tage klumper af bytes ud i et buffer byte array for der efter at sende dem til en webservice der kun acceperer 2 bytes af gangen.Jeg har konstrueret nedenstående som virker, men er langtfra elegant. Input ønskes til hvordan det laves bedre:
class Program {
static void Main(string[] args) {
//lave test array
byte[] arrOrg = (byte[])Array.CreateInstance(typeof(byte), 7);
arrOrg[0] = 0;
arrOrg[1] = 1;
arrOrg[2] = 2;
arrOrg[3] = 3;
arrOrg[4] = 4;
arrOrg[5] = 5;
arrOrg[6] = 6;
//kør test send metoden
byte[] arrNew = Send(arrOrg);
//check at alt blev sendt
if (arrNew.Length != arrOrg.Length) {
Console.WriteLine("Forskellig længde");
return;
}
for (int i = 0; i < arrOrg.Length; i++) {
if (arrOrg[i] !=arrNew[i]) {
Console.WriteLine("Forskelligt indhold");
return;
}
}
Console.WriteLine("OK!");
}
//send metoden. Lige nu returnere den data istedet for at sende dem. Dette er blot så vi i Main() kan teste om alt blev sendt
static byte[] Send(byte[] sourceArray) {
int chuckSize = 2;
int indexInSourceArray=0;
byte[] arrOut = new byte[sourceArray.Length];
byte[] buffer = new byte[chuckSize];
while (indexInSourceArray + chuckSize <= sourceArray.GetUpperBound(0)) {
Array.Copy(sourceArray, indexInSourceArray, buffer, 0, chuckSize);
//Her skal webservice kaldes, men for nu lægger vi data over i arrOut så vi kan check det i Main()
Array.Copy(buffer,0,arrOut,indexInSourceArray,buffer.Length);
indexInSourceArray += chuckSize;
}
int remainder = sourceArray.GetUpperBound(0) - indexInSourceArray+1;
if (remainder>0) {
Array.Copy(sourceArray, indexInSourceArray, buffer, 0, remainder);
Array.Copy(buffer, 0, arrOut, indexInSourceArray, remainder);
}
return arrOut;
}
}