Frage

Implementierung von CRC32 für Daten unter Verwendung von DOT Net 3.5 API. Ich habe dasselbe in Java mit dem folgenden Code getan.

   public static String getMAC (byte [] value) {  
    java.util.zip.CRC32 crc32 = new java.util.zip.CRC32 ();
    crc32.update(value);
    long newCRC = crc32.getValue();
    String crcString = Long.toHexString(newCRC);
    try {
        crcString = ISOUtil.padleft(Long.toHexString(newCRC), 8, '0');
    }
    catch (Exception e){
        e.printStackTrace();
    }

    if (ISOConstantsLibrary.DEBUG) System.out.println("for hex string: " + ISOUtil.hexString(value) + "\nmac" + crcString);        
    } 
War es hilfreich?

Lösung

Die .NET FCL bietet keine Klasse wie java.util.zip.crc32, sodass Sie Ihre eigenen rollen müssen. Es ist nicht schwer, es gibt einige anständige Beispiele da draußen:

Beispiel 1 Beispiel 2

Andere Tipps

In der .NET -Bibliothek gibt es keinen Standard -CRC32 -Algorithmus. Sie können andere Implementierungen wie verwenden Dies. Wenn es keine spezifischen Anforderungen für die Verwendung von CRC32 gibt (z. B. müssen Sie nur die Prüfsumme für die Überprüfung der Integrität berechnen), empfehle ich die Verwendung CRC32C. Dieser Algorithmus kann auf modernem CPUs durchgeführt werden, in deren Ergebnis ist er in der Regel 10-fach schneller als die native Implementierung oder 20x-60-mal schneller als bei jeder verwalteten Implementierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top