Wie kann ich berechnen CRC32 als Ganzzahl mit Vorzeichen in C#?

Ich bin ein PHP-Entwickler und ein wenig aus meinem element in C#. In PHP gibt es eine crc32 () - Funktion gibt eine Ganzzahl für eine beliebige Zeichenfolge, die Sie übergeben.

Also das ist, was ich gewohnt bin:

<?php
echo crc32("test");
//displays -662733300

Möchte ich das gleiche in C#. Ich kam in diese C# - Klasse Bibliothek aber verstehen wenig davon. Nach seinen Anweisungen, ich bin, dies zu tun:

//first convert string to byte-array
String input = "test";
byte[] bytes = new byte[input.length * sizeof(char)];
System.Buffer.BlockCopy(input.ToCharArray(), 0, bytes, 0, bytes.Length);

//then calculate the value
Crc32 crc32 = new Crc32();
String output = "";
foreach (byte b in crc32.ComputeHash(bytes))
{
    output += b.ToString("x2").ToLower();
}

Dass gibt mir eine Ausgabe-string von 27d86d6a. Was muss ich stattdessen tun, um wieder eine Ganzzahl? (In diesem Beispiel sollten gleich -662733300)

Mehrere Verweise auf .Netto-crc-Rechner hier
nicht sicher, aber AFAIK ist das wie PHP schon immer hatte es implementiert ist (auf 32-bit Systemen sowieso). Für meine Zwecke brauche ich etwas, das in übereinstimmung mit dieser Verhalten.
aus dem link, den du gepostet hast: "Weil der PHP-Ganzzahl-signiert vielen crc32-Prüfsummen werden negative Ganzzahlen auf 32-bit-Plattformen. Auf 64-bit-Installationen alle crc32() Ergebnisse werden positive ganze zahlen obwohl. So müssen Sie das "%u" formatter von sprintf() oder printf() liefert die string-Darstellung der unsigned crc32() Prüfsumme dezimal-format."

InformationsquelleAutor soapergem | 2014-01-17

Schreibe einen Kommentar