CRC8签入PHP
如何在PHP中生成CRC-8校验和?它必须是CRC8吗 在PHP.net上有一个非常简单的实现和的本机版本CRC8签入PHP,php,checksum,crc,Php,Checksum,Crc,如何在PHP中生成CRC-8校验和?它必须是CRC8吗 在PHP.net上有一个非常简单的实现和的本机版本 如果它必须是CRC8,我建议您使用马吕斯指出的维基百科页面上的伪代码进行编码 它必须是CRC8吗 function crcnifull ($dato, $byte) { static $PolyFull=0x8c; for ($i=0; $i<8; $i++) { $x=$byte&1; $byte>>=1; if ($dat
如果它必须是CRC8,我建议您使用马吕斯指出的维基百科页面上的伪代码进行编码 它必须是CRC8吗
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;
}
在PHP.net上有一个非常简单的实现和的本机版本
如果它必须是CRC8,我建议您使用马吕斯指出的维基百科页面上的伪代码进行编码 Bob,您的代码不适用于“D$1I 11/14/2006 18:15:00 1634146 3772376 3772344 3772312 3772294 1*”字符串。根据您的计算,该示例中的crc8计算结果为28,而实际结果为57。我希望你仍然遵循这个思路。你能检查一下吗?我想Bob刚刚得到他的代码,甚至没有添加引用,所以我怀疑它是否会被修复。Bob,你的代码对“D$1I 11/14/2006 18:15:00 1634146 3772376 3772344 3772312 3772294 1*”字符串不起作用。根据您的计算,该示例中的crc8计算结果为28,而实际结果为57。我希望你仍然遵循这个思路。请你检查一下,好吗?我想Bob刚刚得到了他的代码,甚至没有添加引用,所以我怀疑它是否会被修复。图书馆,根据MIT许可证由图书馆发布,根据MIT许可证由
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;
}
$crc8=crc8(sbin2ar($packet));