首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CRC8-检入PHP

CRC8-检入PHP
EN

Stack Overflow用户
提问于 2009-02-03 13:22:38
回答 2查看 6.6K关注 0票数 2

如何在PHP中生成CRC-8校验和?

EN

回答 2

Stack Overflow用户

发布于 2009-02-03 21:14:35

一定要是CRC8吗?

在PHP.net上,有一个非常简单的CRC16实现和一个本机版本的CRC32

马利乌斯指出,如果非要用CRC8,我建议从维基百科页面上的伪代码中编写一些代码。

票数 0
EN

Stack Overflow用户

发布于 2010-04-04 05:57:55

代码语言:javascript
复制
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;
}

要将此函数用于二进制字符串,必须先将该二进制字符串转换为数组。这可以像这样实现:

代码语言:javascript
复制
function sbin2ar($sbin)
{
  $ar=array();
  $ll=strlen($sbin);
  for ($i=0; $i<$ll; $i++) $ar[]=ord(substr($sbin,$i,1));
  return $ar;
}

示例如何使用整个过程:

代码语言:javascript
复制
$crc8=crc8(sbin2ar($packet));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/507041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档