CRC-CCITT (0xFFFF) Funktion?
Kann mir jemand helfen mit der Delphi-Implementierung von CRC-CCITT (0xFFFF
)?
Schon die Java-version, aber verwirrend, wie die Portierung auf Delphi
public static int CRC16CCITT(byte[] bytes) {
int crc = 0xFFFF; //initial value
int polynomial = 0x1021; //0001 0000 0010 0001 (0, 5, 12)
for (byte b : bytes) {
for (int i = 0; i < 8; i++) {
boolean bit = ((b >> (7-i) & 1) == 1);
boolean c15 = ((crc >> 15 & 1) == 1);
crc <<= 1;
if (c15 ^ bit) crc ^= polynomial;
}
}
crc &= 0xffff;
//System.out.println("CRC16-CCITT = " + Integer.toHexString(crc));
return crc;
}
und für die PHP Implementierung
<?php
function crc16($data)
{
$crc = 0xFFFF;
for ($i = 0; $i < strlen($data); $i++)
{
$x = (($crc >> 8) ^ ord($data[$i])) & 0xFF;
$x ^= $x >> 4;
$crc = (($crc << 8) ^ ($x << 12) ^ ($x << 5) ^ $x) & 0xFFFF;
}
return $crc;
}
InformationsquelleAutor Dels | 2011-02-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
0xFFFF
übersetzt$FFFF
&
übersetztand
^
übersetztxor
<<
übersetztshl
>>
übersetztshr
x ^= y
übersetztx := x xor y
, ähnlich wie für&=
,<<=
usw.Diese Betreiber haben in der Regel einen höheren Rang in Delphi, so dass Sie in der Regel haben müssen, Ihre Argumente in Klammern.
Ich bin mir ziemlich sicher, dass es gibt viele andere Implementierungen von CRC16 etc. für Delphi, siehe z.B. Verbesserung der Geschwindigkeit auf Crc16 Berechnung
InformationsquelleAutor Barry Kelly
das Ergebnis für einen einzelnen char wie '9' ist wie bei anderen online-Konverter, aber wenn ich übergeben Sie eine Zeichenfolge wie "helloworld" das Ergebnis ist defferent.wie das sein kann possile !?
InformationsquelleAutor Remy Lebeau
Finden Sie ein in Delphi Encryption Compendium (DEC) Komponente.
http://blog.digivendo.com/2008/11/delphi-encryption-compendium-dec-52-for-d2009-released/
die installation der Komponente fehlgeschlagen, aber danke 😀
Code nicht in der Tat auf Delphi XE7
InformationsquelleAutor TridenT
fand ich einige code, der funktioniert:
Quelle : http://www.miscel.dk/MiscEl/CRCcalculations.html
InformationsquelleAutor Dels
InformationsquelleAutor Vladimir Poslavskiy