Comment puis-je générer une somme de contrôle CRC-8 en PHP?CRC8-Check in PHP
1
A
Répondre
0
0
function crcnifull ($dato, $byte)
{
static $PolyFull=0x8c;
for ($i=0; $i<8; $i++)
{
$x=$byte&1;
$byte>>=1;
if ($dato&1) $byte|=0x80;
if ($x) $byte^=$PolyFull;
$dato>>=1;
}
return $byte;
}
function crc8 (array $ar,$n=false)
{
if ($n===false) $n=count($ar);
$crcbyte=0;
for ($i=0; $i<$n; $i++) $crcbyte=crcnifull($ar[$i], $crcbyte);
return $crcbyte;
}
Pour utiliser cette fonction pour une chaîne binaire, vous devez d'abord convertir la chaîne binaire en tableau. Cela peut être réalisé comme ceci:
function sbin2ar($sbin)
{
$ar=array();
$ll=strlen($sbin);
for ($i=0; $i<$ll; $i++) $ar[]=ord(substr($sbin,$i,1));
return $ar;
}
Exemple comment utiliser la chose:
$crc8=crc8(sbin2ar($packet));
Questions connexes
- 1. PHP Embedded in Javascript
- 2. Propriété de classe dynamique $$ value in php
- 3. Puis-je obtenir document.cookie sans javascript? Alternate in PHP
- 4. MySQL ORDER BY IN()
- 5. Word 2007 Add-in
- 6. plug-in vidéo pour moodle
- 7. Plug-in "in-line find" pour Visual Studio
- 8. Forum plug-in vB ne fonctionne pas
- 9. Flash .Net tie-in
- 10. YearFrac in Sql 2005
- 11. In-Memory SQL-CE
- 12. combobox in vb.net
- 13. has_and_belongs_to_many in Rails
- 14. DateTime in C#
- 15. TLS/SSL in .net
- 16. Callbacks in C#
- 17. Add-in de rapports
- 18. Lisp grammar in yacc
- 19. $ param name in div
- 20. LINQ-to-SQL IN()
- 21. Outlook Express Add-in
- 22. FCKeditor Toolbar in asp
- 23. plug-in pour MOODLE
- 24. Printform in C# 2008
- 25. Sécurité .NET Plug In
- 26. ArrayList in C#
- 27. Threading in .net
- 28. String.contains in Java
- 29. Lifestream in Rails
- 30. key down in .net
Bob, votre code ne fonctionne pas pour le « D $ 1I 11/14/2006 18:15: 00 1634146 3772376 3772344 3772312 3772294 1 * "chaîne. Après vos calculs, les calculs de crc8 pour cet exemple donnent comme résultat 28, quand il devrait donner 57. J'espère que vous suivez toujours ce fil. Pouvez-vous vérifier cela, s'il vous plaît? –
Je pense que Bob vient d'obtenir son code [de Pastebin] (http://pastebin.com/qypDLF5W) sans même ajouter de référence, donc je doute qu'il soit corrigé. – GolezTrol