当前位置: 首页 > news >正文

crc32算法php版----crc32.php

<?php$remainder = (int)0xFFFFFFFF;
$poly=(int)0x04C11DB7;//$stringArray = array(0x68, 0x65);
$stringArray = array("h","e");//$string = "h";
//$hex = bin2hex($string);
//echo $hex; // 输出: 68
//$string = "h";
//$hex = ord($string);
//echo $hex; // 输出: 104!!!function reverseBits($n) {$result = $n & 0xff;//echo "<br> reverseBits \$n= ".$result."<br>";$result2=0x0 & 0xff;for ($i = 0; $i < 8; $i++) {$result1 = ($result2 << 1) &0xff;//echo "<br> result1= ".$result1."<br>";    $n1=$n & 1<<$i;if($n1 !=0x0){$n2=0x1;}else {$n2=0x0;}//echo "<br> n2= ".$n2."<br>";$result2 = $result1 | $n2;//echo "<br> == ".$result2."<br>";}//echo "<br> reverseBits == ".$result2."<br>";return $result2;
}//echo dechex(reverseBits(0x68));
//echo dechex(reverseBits(bin2hex("h")));
//echo dechex(reverseBits(ord("h")));function reverseBits32($n) {$result = $n & 0xffffffff;//echo "<br> reverseBits \$n= ".dechex($result)."<br>";for ($i = 0; $i < 32; $i++) {$result1 = ($result2 << 1) &0xffffffff;//echo "<br> result1= ".$result1."<br>";    $n1=($n & 1<<$i) & 0xffffffffff;if($n1 !=0x0){$n2=0x1;}else {$n2=0x0;    // code...}//echo "<br> n2= ".$n2."<br>";$result2 = $result1 | $n2;//echo "<br> = ".$result2."<br>";}return $result2;
}
//echo "<br> reverseBits32==== ".dechex(reverseBits32(0x68000000));foreach ($stringArray as $string) {//echo "<br>\$string".$string . "<br>";$stringhex= reverseBits(ord($string));//echo "<br> reverseBits ==== ".$stringhex;//echo "<br> \$stringhexx = ".dechex($stringhexx). "<br>";$stringhexx= ($stringhex << 24) & 0xFFFFFFFF; $remainder = ($remainder^$stringhexx)& 0xFFFFFFFF;//echo "<br>".dechex($remainder) . "<br>";for($i=0;$i<8;$i++)  {//echo "<br> for begin \$remainder= ".dechex($remainder) . "<br>";if ($remainder & 0x80000000){$remainder = ($remainder << 1 ) & 0xFFFFFFFF;//echo "<br> for if 1 <<1 =  ".dechex($remainder) . "<br>";$remainder =($remainder ^ $poly)& 0xFFFFFFFF;//echo "<br> for if 1 =".dechex($remainder) . "<br>";}else{$remainder = ($remainder << 1 ) & 0xFFFFFFFF;//echo "<br> for if 2 <<1 =".dechex($remainder) . "<br>";        }}echo "<br>\$string =".$string . "<br>"; $remainder= reverseBits32($remainder);//echo "<br>".$remainder;
//echo "<br> not xor= ".dechex($remainder);$remainder=($remainder^0xFFFFFFFF);echo "<br> xor =".dechex($remainder);
}echo "<br>========".dechex($remainder); ?>

<?php
echo "<br>";
$str1 = crc32("h");
printf("crc32(\"h\")=%8x",$str1);
echo "<br>";
$str2 = crc32("he");
printf("crc32(\"he\")=%8x ",$str2);//jieguo:
?>


crc32("h")=916b06e7
crc32("he")=d1256687 

http://www.dtcms.com/a/324691.html

相关文章:

  • 【Spring IoC 核心实现类详解:DefaultListableBeanFactory】
  • Leetcode 3646. Next Special Palindrome Number
  • 分发糖果(贪心算法)
  • Vue.js设计于实现 - 响应式(三)
  • Spring Boot 全局异常处理与日志监控实战
  • OneCode 3.0 可视化功能全面分析:从开发者到用户的全场景解析
  • 一周学会Matplotlib3 Python 数据可视化-绘制条形图(Bar)
  • 论文复现与分析内容关于一种实用的车对车(V2V)可见光通信(VLC)传播模型
  • Z20K118库中寄存器及其库函数封装-REGFILE库
  • Windows执行kubectl提示拒绝访问【Windows安装k8s】
  • imx6ull-驱动开发篇17——linux原子操作实验
  • PXE自动化安装部署OpenEuler24.03LTS
  • MySQL中的in和exists的区别
  • mmdetection3d中centerpoint解析
  • FPGA常用资源之IO概述
  • Mybatis学习之动态SQL(八)
  • 使用GLib D-Bus 库创建dbus服务端
  • 安全运维的核心
  • 使用 iFLOW-CLI GitHub Action 和 Qwen3-Coder 给 GitHub 仓库生成幻灯片风格的文档站点
  • 一个基于 Next.js 和 Puppeteer 的 Markdown 转图片服务,支持 Docker 部署和 API 集成
  • AI绘画:生成唐初秦叔宝全身像提示词
  • reuse: for booting my spring project with mvn in Windows command line
  • 理清C语言中内存操作的函数
  • LeetCode_字符串
  • 《C语言》结构体和联合体练习题--1
  • ROS2 学习笔记
  • 基于百度地图API的社区地图展示技术实现
  • 初识STL
  • ADB简介
  • 【redis初阶】--------Set 集合类型