2017-11-24 3 views
1

Ich muss die Anzahl der Zeilen in einem Byte-Array alle 16 Bytes zählen. Ich bekomme die Zeilennummer mit einer Methode, die vor, das Array in String konvertiert. Diese Konvertierung des Arrays in eine Zeichenfolge, wann immer es darauf ankommt, überlastet jedoch den Prozess erheblich. Also ich frage mich, wie man die Anzahl der Zeilen in einem Byte-Array alle 16 Bytes, aber ohne diese Umwandlung in String erhalten. Haben Sie irgendwelche Ideen?Wie zählen Zeilen von einem Byte-Array alle 16 Bytes?

string hexString = ByteArrayToHexString(buffer); 
    int lineCount = CountLinesHexString(hexString); //Sum 32 in 32 characters (16 Bytes). 
    int expectedLength = lineCount * 16; 

    public static int CountLinesHexString(string hexStringToCount) 
    { 
     var regex = new Regex(@".{32}"); 
     string hexStringLinesOf16 = regex.Replace(hexStringToCount, "$&" + Environment.NewLine); 
     int length = hexStringLinesOf16.Length; 
     int count = 0; 
     for (int i = 0; i < length; i++) 
     { 
      if (hexStringLinesOf16[i] == '\n') count++; 
     } 
     return count + 1; 
    } 

Antwort

1

wie ich Ihre Frage verstanden es keine Notwendigkeit zur Umkehr zu bespannen ist dies nur tun:

int bufferLength=buffer.Length; 

int lineCount=(bufferLength + 15)/16; 

alle getan

Dank für einen Kommentar

+0

You 'Length' bedeuten statt 'Length()', und wenn das OP nicht weiß, dass es immer ein Vielfaches von 16 Bytes geben wird, wollen Sie wahrscheinlich '(bufferLength + 15)/16' aufrunden. –

+0

Es hat jetzt funktioniert, vielen Dank: D. –

+0

@PedroSilva auch danke für den Kommentar –

Verwandte Themen