나는 배열을 가지고있다. DWORD가 필요합니다. 나는 시도 :PHP 바이트 2을 DWord
$dword = $arr[0]+$arr[1]*265+$arr[2]*265*265+$arr[3]*265*265*265;
옳고 내가 잘못하고있는 중이 야인가요?
나는 배열을 가지고있다. DWORD가 필요합니다. 나는 시도 :PHP 바이트 2을 DWord
$dword = $arr[0]+$arr[1]*265+$arr[2]*265*265+$arr[3]*265*265*265;
옳고 내가 잘못하고있는 중이 야인가요?
시도 :
$dword = (($arr[3] & 0xFF) << 24) | (($arr[2] & 0xFF) << 16) | (($arr[1] & 0xFF) << 8) | ($arr[0] & 0xFF);
그것은 일부 수정으로 당신의 방법을 수행 할 수 있습니다
$dword = $arr[0] + $arr[1]*0x100 + $arr[2]*0x10000 + $arr[3]*0x1000000;
또는 팩을 사용하여/압축 해제 :
$dword = array_shift(unpack("L", pack("CCCC", $arr[0], $arr[1], $arr[2], $arr[3])));
을 또는 적어도 사용에 256보다 265.
@Emil, 0xff는 255이므로 잘못되었습니다. – driis
죄송합니다. 내 잘못이야. :) –
내 코드에 256이 있는데, 여기에 잘못 써 놨습니다 : o. Thx –
요 ur 코드가 제대로 작동해야하지만 265가 아닌 256으로 곱해야합니다. (8 비트에서는 2^8 = 256 고유 값이 있습니다.) 256으로 곱하는 것은 비트 8을 왼쪽으로 이동시키는 것과 동일하기 때문에 작동합니다.
아마도 의도를 더 잘 전달하기 위해 비트 연산자를 사용하는 것이 좋습니다. http://theopensourcery.com/phplogic.htm
내 코드에 256이 있는데, 여기에 잘못 써 놨습니다 : o. Thx –
또는
<?php
$arr = array(95,8,0,0);
$bindata = join('', array_map('chr', $arr));
var_dump(unpack('L', $bindata));
모두 시도해보십시오 (Emil H와 내 코드) 결과로 2143을 제공합니다.
+1. 나는 같은 방식으로 생각하고 있었지만 먼저 시도하고 싶었다. 당신이 이미 그것을 제안했다는 것을 알기 위해 그것을 나의 대답에 추가했습니다. :) –
감사합니다. –