Red de conocimiento informático - Aprendizaje de programación - ¡Algoritmo de cambio php crc16 urgente!

¡Algoritmo de cambio php crc16 urgente!

Proceso de cálculo de verificación Crc16:

1. Configure el registro CRC y asígnelo a FFFF (hexadecimal).

2. Realice una operación XOR en el primer carácter de 8 bits de los datos y los 8 bits inferiores del registro 16 CRC, y almacene el resultado en el registro CRC.

3. El registro CRC se desplaza un bit a la derecha, el MSB se llena con ceros, el LSB se desplaza y se verifica.

4. Si el LSB es 0, repita el paso 3; si el LSB es 1, el registro CRC y el código polinómico son diferentes o diferentes.

Nota: El LSB marcado en este paso debe ser el LSB antes del desplazamiento a la derecha, es decir, el LSB antes del tercer paso.

5. Repita los pasos 3 y 4 hasta completar los 8 turnos. En este momento, se procesan datos de 8 bits.

6. Luego pon el segundo, tercer y cuarto dato. . . n caracteres de 8 bits. . . Repita los pasos 2 a 5 hasta que se hayan procesado todos los datos.

7.El contenido final del registro CRC es el valor CRC.

En teoría, esto se puede hacer.

En cuanto al orden de los primeros ocho bits y los últimos ocho bits que mencionaste, en realidad es $CRC = ($CRC gt; gt8)^($crclt; lt8), por lo que está invertido.

El código modificado es:

Función crc16($string, $crc=0xffff) {

for($ x = 0; $ x ltstrlen( $ cadena $x )

{

$crc = $crc ^palabra($ cadena[$ x]);

for($ y = 0 ; $ y lt8; $ y )

{

si (($ crc amp0x0001) == 0x0001)

$ CRC = (($ CRC gt ; gt1)^ 0xa 001);

Otro

$ crc = $ crc gt gt1;

}

}

$CRC =($CRC gt; gt8)^($CRC lt; lt8);

devuelve $crc

}

Si La base de las operaciones de bits es relativamente pobre. Se recomienda comprender primero las operaciones de bits.

Materiales de referencia:

crc:/view/80377.htm#2

Operaciones de bits:/view/379209.htm

Espero que ayude.