Hvis jeg har en lang Array (Det er en byte[]), hvordan kan jeg så splitte den op i en række mindre arrays hvor der spittes alle de steder hvor et bestemt data stump forefindes (i mit tilfælde de to byte 0D 0A).
Altså jeg ved selvfølgelig godt at jeg bare kan skrive noget kode der gør det. Jeg er ude efter om der ikke findes en metode eller to der gør at jeg kan gøre det med en enkelt linje.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
i sidste ende skal der jo skrives noget kode til at gøre det, spørgsmålet er så bare om nogen allerede har gjort det, eller om man selv skal gøre det.
psuodo:
public ArrayList SplitArray(byte[] arr, byte[] splitData) { if (splitData.Length != 2) throw new ArgumentException("SplitData must be two bytes"); if (arr == null) throw new ArgumentExcpetion("Array must not be null");
ArrayList returnArr = new ArrayList(); int i = 0; int lastIndex = 0; while(arr.Lengh-2 == i) {
if (arr[i] == splitData[0] && arr[i+1] == splitData[1]) { byte[] b = new byte[i-lastIndex] for (int ii = i; ii < lastIndex; ii++) b[ii] = arr[ii]; returnArr.Add(b); lastIndex = i; }
hvis det i virkeligheden er linier du vil læse så kan du sikkert spare en masse kode ved at få wrappet en StreamReader/StringReader omkring dit input ...
Tak. Ved godt at jeg kunne gøre det let ved f.eks at trylle den om til en String, og så splitte den. Men det vil jeg ikke, ide jeg vil være 100% sikker på at de forskellige bytes værdier forbliver de samme.
namespace E { class MainClass { public static void Main(string[] args) { byte[] b = { 0x41, 0x0D, 0x0A, 0x42, 0x42, 0x0D, 0x0A, 0x43, 0x43, 0x43, 0x0D, 0x0A }; StreamReader sr = new StreamReader(new MemoryStream(b), Encoding.Default); string line; while((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.