2013-07-16 3 views
0

나는 다음과 같은 코드가 있습니다PHP에서 소켓을 사용하여 16 진수를 보내고받는 방법?

socket_write($spawn, $send1, strlen ($send1)) or die("Could not write output\n"); 
socket_write($spawn, $send2, strlen ($send2)) or die("Could not write output\n"); 
socket_write($spawn, $send3, strlen ($send3)) or die("Could not write output\n"); 
socket_write($spawn, $send4, strlen ($send4)) or die("Could not write output\n"); 

수신 측이 같은 그것을 얻을 : 나는이처럼

$send1 = 0x01; 
$send2 = 0x03; 
$send3 = 0x00; 
$send4 = 0x00; 

을 보내

$result = socket_read ($socket, 1024) or die("Could not read server response\n"); 
    echo "Reply From Server :".$result; 

를 수신 데이터는 다음과 같습니다 1300, 어떻게 보내고 PHP에서 소켓을 사용하여 16 진수를받을 수 있습니까?

답변

0

PHP는 16 진수 데이터 형식에 내장이없는 그래서 당신은이 작업을 수행 할 때

$send1 = 0x01; 

이 PHP에 의해 정수로 처리됩니다. (위해서 var_dump (0x01로 시도) 당신은 INT를 얻을 것이다 (1)) 그래서 당신과 같이 수신 측에 문자열로 데이터를 전송하고 처리 할 수 ​​있습니다 :

$send1 = "0x01"; 
$send1 = "0x02"; 
$send1 = "0x03"; 
$send1 = "0x04"; 

하거나 정수 값을 보낼 수 있습니다 다음 소켓이고하는 수신 측에서의 처리에 16 진수 값으로 변환 :

$send1 = 1; 
$send2 = 2; 
$send3 = 3; 
$send4 = 4; 

를 수신 측 :

var_dump(dec2hex($result)); 

(Y되도록 한 번에 하나 개의 입력을 처리 ou는 그들을 분리 할 수 ​​있습니다.)

+0

하지만 $ send2 = "0xCD"는 어떻게 수신하여 16 진수로 변환합니까? – user2131316

+0

두 번째 생각에, 나는 코드가 16 진수로 값을 보내는 것으로 시작한다는 것을 깨달았다. 따라서 var_dump (0x01)는 int (1) 을 제공하고 var_dump (0xcd)는 int (205)를 제공합니다. 다음과 같이 보낼 수도 있습니다. $ send1 = 0xcd; (단 하나의 값) 수신 측에서 얻은 결과를 확인하십시오. 수신 측에서 실제로 16 진수 값을 얻는다면 각 헥사 값 다음에 분리 기호를 추가 한 다음 (예 : |와 같이) 구분자를 수신자 측에서 분할하여 추가 처리를 수행하면됩니다 . 이 모든 것이 의미가 있기를 바랍니다. – Maximus2012

관련 문제