2015-01-21 6 views
0

다음 체크섬을 수행해야하는 문자열이 있습니다. 필자는 PHP (또는 함수)에이 논리를 작성하여 어떻게 구현할 수 있습니까? 다음은 문서화 된 예제입니다.PHP XOR 체크섬

1 바이트는 예를 들어 XOR 체크섬이다 : 패킷 인 경우 29 29 B1 00 07 0A 9F 95 38 0 ℃ 82 0D 가 0x82 = 29 XOR 29 배타적 B1의 XOR 00 XOR 07 배타적 0A의 XOR 9F의 XOR 95 XOR 38 XOR 0C

상기 문자열, B1 29 29 00 07 95 0A의 9F 38 0C ( 82)는 0D 생성 된 체크섬이다.

+0

이 질문은 정보가 조금 부족합니다. 당신이 시도한 것을 나눌 수 있습니까? 그리고 어떤 문제를 겪었습니까? –

답변

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"; 

?> 
+0

이것은 완벽합니다. 올바른 데이터를 얻으려면 약간의 조정이 필요합니다. –