请问这个 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 编码了吗?  
 让你多给几组,为何只给一组呢?  
谢谢已经搞好了
                        
                        PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号