PHP 파일 API를 사용하여 원시 바이트를 작성하려면 어떻게 해야 합니까?

StackOverflow https://stackoverflow.com/questions/77558

  •  09-06-2019
  •  | 
  •  

문제

파일의 특정 위치에 원시 바이트/바이트 스트림을 쓰고 싶습니다.이것이 내가 현재 가지고 있는 것입니다:

$fpr = fopen($out, 'r+');
fseek($fpr, 1); //seek to second byte
fwrite($fpr, 0x63); 
fclose($fpr);

이는 현재 바이트 오프셋 1에서 시작하는 "99"의 실제 문자열 값을 씁니다.IE에서는 바이트 "9"와 "9"를 씁니다.숫자 99를 나타내는 실제 1바이트 값 0x63을 쓰고 싶습니다.

시간 내 줘서 고마워.

도움이 되었습니까?

해결책

fwrite() 문자열을 사용합니다.노력하다 chr(0x63) 당신이 글을 쓰고 싶다면 0x63 파일에 바이트.

다른 팁

이는 fwrite()가 두 번째 인수로 문자열을 기대하기 때문입니다.대신 이렇게 해보세요:

fwrite($fpr, chr(0x63));

chr(0x63)은 ASCII 값 0x63을 포함하는 한 문자로 구성된 문자열을 반환합니다.(따라서 파일에 0x63이라는 숫자를 쓰게 됩니다.)

문자열을 허용하는 함수에 int를 전달하려고 하므로 문자열로 변환됩니다.

그러면 원하는 내용이 작성됩니다.

fwrite($fpr, "\x63");

정말로 바이너리를 파일에 쓰고 싶다면 다음을 사용하는 것이 좋습니다. pack() 파일 API와 함께 접근합니다.

이 질문을 참조하세요 예를 들어.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top