Я хочу записать необработанный байтовый / байтовый поток в позицию в файле. Вот что у меня есть сейчас:
$fpr = fopen($out, 'r+');
fseek($fpr, 1); //seek to second byte
fwrite($fpr, 0x63);
fclose($fpr);
В настоящее время он записывает фактическое строковое значение «99», начиная со смещения байта 1. IE, он записывает байты «9» и «9». Я просто хочу записать фактическое однобайтовое значение 0x63, которое представляет собой число 99.
Спасибо за ваше время.






fwrite() принимает струны. Попробуйте chr(0x63), если вы хотите записать в файл байт 0x63.
Вы пытаетесь передать int функции, которая принимает строку, поэтому она преобразуется для вас в строку.
Это напишет то, что вы хотите:
fwrite($fpr, "\x63");
Это потому, что fwrite () ожидает строку в качестве второго аргумента. Попробуйте сделать это вместо этого:
fwrite($fpr, chr(0x63));
chr (0x63) возвращает строку с одним символом со значением ASCII 0x63. (Таким образом, он запишет в файл число 0x63.)
Если вы действительно хотите записывать двоичные файлы в файлы, я бы посоветовал использовать подход pack() вместе с файловым API.
Посмотреть этот вопрос для примера.