2008-09-16 4 views
2

파일의 한 위치에 원시 바이트/바이트 스트림을 쓰려고합니다.PHP 파일 api를 사용하여 원시 바이트를 쓸 수 있습니까?

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

이 현재는 바이트 "9"와 "9"를 기록, 1 IE 오프셋 바이트에서 시작 "99"의 실제 문자열 값을 기록한다 : 이 내가 현재 가지고있는 것입니다. 숫자 99를 나타내는 실제 1 바이트 값 0x63을 쓰고 싶습니다.

시간 내 주셔서 감사합니다.

답변

7

fwrite()은 문자열을 취합니다. 파일에 0x63 바이트를 쓰려면 chr(0x63)을 시도하십시오.

1

문자열을 허용하는 함수에 int를 전달하려고합니다. 따라서 문자열이 사용자에게 전달됩니다.

이 당신이 원하는 무엇을 쓸 것입니다 :에 fwrite()가 두 번째 인수로 문자열을 기대 때문에

fwrite($fpr, "\x63"); 
4

있다고. 대신이 일을보십시오 :

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

CHR (0x63)은 ASCII 값 0x63 하나 개의 문자로 문자열을 반환합니다. (따라서 0x63을 파일에 쓸 것입니다.)

+0

이는 엔디안에 따라 다릅니다. – Christian

0

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

See this question 예를 들어.

관련 문제