请问这个 crc 16 的java代码如何转换成php的
本帖最后由 oelenson 于 2014-06-21 12:49:27 编辑 请问这个 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 >> 8) | (crc 4);
crc ^= (crc << 12) & 0xffff;
crc ^= ((crc & 0xff) <> $b) & ~(1($b-1));
}
function crc16($buffer) {
$crc = 0xffff;
for ($i = 0; $i < strlen($buffer); $i++) {
$crc = ((urshift($crc,8)) | ($crc 4);
$crc ^= ($crc << 12) & 0xffff;
$crc ^= (($crc & 0xff) <>> (左补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 运行的几组结果