기본 데이터 또는 네트워크 프로그래밍을 처리 할 때는 종종 이진과 16 진 사이의 변환이 필요합니다. 다행스럽게도 PHP는 간단하고 사용하기 쉬운 내장 기능을 제공 하여이 작업을 수행하는 데 도움이되며 가장 일반적으로 사용되는 것은 Bindec () 및 Base_Convert () 입니다.
Bindec () 는 PHP의 내장 기능으로 이진 문자열을 10 진수로 변환합니다. Dechex ()는 10 진수를 16 진수로 변환 할 수 있습니다. 이 두 기능을 결합하여 바이너리에서 16 진전 변환을 완료 할 수 있습니다.
이 예에서 11010110은 10 진수에서 214 로 변환 된 다음 16 진수로 D6 으로 변환됩니다.
소수점을 먼저 돌려서 16 진수를 바꾸는 것이 너무 번거 롭다고 생각되면 PHP의 Base_Convert ()는 보다 직접적인 방법을 제공합니다. 이 기능을 사용하면 소스 카디널리티 및 대상 카디널리티를 직접 지정하여 이진 변환을 신속하게 구현할 수 있습니다.
이 함수의 첫 번째 매개 변수는 변환 할 문자열이고, 두 번째 매개 변수는 원래 바이너리 (여기서는 2)이고 세 번째 매개 변수는 대상 바이너리 (여기서는 16)입니다.
전달 된 이진 문자열은 법적 이진 번호 (0 및 1 포함) 여야하며, 그렇지 않으면 bindec () 및 base_convert () 모두 예상치 못한 결과를 반환 할 수 있습니다.
base_convert ()를 사용하는 경우 리턴 값은 문자열 유형입니다. 16 진수 숫자가 다른 바이너리 숫자로 계속 변환 해야하는 경우 유형 변환에주의를 기울여야합니다.
숫자 수를 작성 해야하는 경우 str_pad () 함수를 사용할 수 있습니다. 예를 들어, 항상 2 비트 16 진수 번호를 출력하려면 다음과 같이 쓸 수 있습니다.
이 변환은 네트워크 데이터 패킷, 컬러 코드 (예 : RGB 값), 비트 맵 데이터 등과 같은 시나리오에서 매우 일반적입니다. 예를 들어, 바이너리 데이터 스트림을 받으면 16 진 양식으로 인쇄하여 디버깅을합니다.
<code> $ data = [ '11000011', '10101010', '11110000']; foreach ($ binary as $ binary) {echo strtoupper (base_convert ($ binary, 2, 16)). "";; } // 출력 : C3 AA F0 </code>예를 들어 결과를 16 진 색상으로 출력 할 수도 있습니다.
<code> $ r = '11110000'; $ g = '10101010'; $ b = '11000011'; $ hexColor = '#'. strtoupper (base_convert ($ r, 2, 16)). strtoupper (base_convert ($ g, 2, 16)). strtoupper (base_convert ($ b, 2, 16)); echo $ hexcolor; // 출력 : #f0aac3 </code>원격 인터페이스에서 바이너리 인코딩 된 데이터를 얻는 경우 다음과 같습니다.
<code> $ response = file_get_contents ( 'https://m66.net/api/data/binary'); $ data = json_decode ($ response, true); // 반환 된 것이 [ '11001100', '11110000'] foreach ($ binary as $ binary) {echo strtoupper (base_convert ($ binary, 2, 16))라고 가정합니다. "";; } // 출력 : CC F0 </code>file_get_contents () , json_decode () 및 base_convert ()를 결합하여 이진 데이터를 처리 및 디스플레이를 위해 읽을 수있는 16 진수 형식으로 빠르게 변환 할 수 있습니다.