请问这个 crc 16 的java代码如何转换成php的
请问这个 crc 16 的java代码如何转换成php的,自己用php 转的代码不对
$str2='AQEBAQEB';
$str2=base64_decode($str2);
java 代码
public static int CRC16(final byte[] buffer) { int crc = 0xffff; for (int i = 0; i < buffer.length; i++) { crc = ((crc >>> 8) | (crc << 8)) & 0xffff; crc ^= (buffer[i] & 0xff); crc ^= ((crc & 0xff) >> 4); crc ^= (crc << 12) & 0xffff; crc ^= ((crc & 0xff) << 5) & 0xffff; } crc &= 0xffff; return crc; }
function uRShift($a, $b){ if($b == 0) return $a; return ($a >> $b) & ~(1<<(8*PHP_INT_SIZE-1)>>($b-1));} function crc16($buffer) { $crc = 0xffff; for ($i = 0; $i < strlen($buffer); $i++) { $crc = ((uRShift($crc,8)) | ($crc << 8)) & 0xffff; $crc ^= ($buffer[$i] & 0xff); $crc ^= (($crc & 0xff) >> 4); $crc ^= ($crc << 12) & 0xffff; $crc ^= (($crc & 0xff) << 5) & 0xffff; } $crc &= 0xffff; return $crc; }
回复讨论(解决方案)
java 的 >>> (左补0右移) 在 php 中不需特殊处理,可直接 >>
至多将 (crc >>> 8) 译为 (($crc >> 8) & 0xff)
java 的 byte[] 类型,没有对应的 php 数据类型
你可以逐字节取内码 ord($buffer[$i])
也可以一进函数就 $buffer = array_values(unpack('C', $buffer));
unpack('C', $buffer) 返回的数组是从下标 1 开始的,所以要 array_values 整理一下
如果用 foreach 循环,或 for 循环从 1 开始就不需要整理了
其他应该没什么了
如果觉得还有问题,请给出 java 运行的几组结果
$str2='AQEBAQEB';
$str2=base64_decode($str2);
java 得到的 结果是 8357
php 得到的结果是 33653
<?phpfunction crc16($buffer) { $crc = 0xffff; //$buffer = array_values(unpack('C', $buffer)); for ($i = 0; $i < strlen($buffer); $i++) { $crc = ((($crc >> 8) & 0xff) | ($crc << 8)) & 0xffff; $crc ^= (ord($buffer[$i]) & 0xff); $crc ^= (($crc & 0xff) >> 4); $crc ^= ($crc << 12) & 0xffff; $crc ^= (($crc & 0xff) << 5) & 0xffff; } $crc &= 0xffff; return $crc;}$str=base64_decode('AQEBAQEBdYM=');$str2='AQEBAQEB';$str2=base64_decode($str2);$arr2=unpack('H*',$str2);$arr=unpack('H*',$str);print_r($arr);echo '-----------------------------------';echo crc16($str2);
为什么要 $str2=base64_decode($str2);
java 里也做了 base64 编码了吗?
让你多给几组,为何只给一组呢?
谢谢已经搞好了

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

在PHP8 中,match表达式是一种新的控制结构,用于根据表达式的值返回不同的结果。1)它类似于switch语句,但返回值而非执行语句块。2)match表达式使用严格比较(===),提升了安全性。3)它避免了switch语句中可能的break遗漏问题,增强了代码的简洁性和可读性。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

在PHP中可以通过使用不可预测的令牌来有效防范CSRF攻击。具体方法包括:1.生成并在表单中嵌入CSRF令牌;2.在处理请求时验证令牌的有效性。
