我有以下字符串需要对其进行校验和。我将如何在PHP(或函数)中编写逻辑来实现此目的。这是我从文档中获得的一个示例。
1个字节,它是xor校验和,例如: 如果包是:29 29 B1 00 07 0A 9F 95 38 0C 82 0D 0x82 = 29 xor 29 xor B1 xor 00 xor 07 xor 0A xor 9F xor 95 xor 38 xor 0C
在上面的字符串中,29 29 B1 00 07 0A 9F 95 38 0C( 82 )0D是生成的校验和。
答案 0 :(得分:3)
答案 1 :(得分:1)
我得到了以下工作,它给出了正确的校验和(130,0x82),所以它很有希望...你可以连接下面的一些语句,以获得稍微好一点的性能,为了便于阅读,我将操作分开。
<?php
// Input string. Checksum to be generated over the first 10 elements.
$string = '29 29 B1 00 07 0A 9F 95 38 0C 82 0D';
// Initial checksum
$checksum = 0;
// Split into chunks and process first 10 parts
$parts = explode(' ', $string, 11);
for ($i = 0; $i < 10; $i++) {
$part = $parts[$i];
$nr = hexdec($part);
$checksum ^= $nr;
}
// Done, bring back checksum into 0..0xff range
$checksum &= 0xff;
echo "Got checksum: ", $checksum, "\n";
?>