Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Как писать бинарно в файл на php (https://javascript.ru/forum/server/82879-kak-pisat-binarno-v-fajjl-na-php.html)

wadim2 24.07.2021 12:26

Как писать бинарно в файл на php
 
Всем привет! Подскажите пожалуйста, как писать бинарно в файл. Есть строка, она двоичная, но по сути это просто строка: 010101
Вот нужно взять каждый байт и записать его как бит в файл. То есть, берем 0, как бы превращаем в бит и пишем в файл. Стандартная fopen (..., wb) не работает, баг php.

Белый шум 25.07.2021 03:26

wadim2,
fopen не так работает.
Берёшь первые 8 символов, преобразуешь в int с помощью intval, затем это значение преобразуешь в символ и записываешь в файл:
php -r '$fp=fopen("h.txt", "wb"); $c=intval("01101000", 2); fwrite($fp, chr($c));'

wadim2 29.07.2021 10:36

Не работает. Вы файл получаемый смотрели, когда запускали код? Это просто текстовый файл получается, а нужно чтоб он был бинарным.

Белый шум 29.07.2021 11:14

wadim2,
он бинарный, состоит из битов "01101000", что соответствует ASCII коду символа "h". Или как, по вашему, должен выглядеть бинарный файл?
Вы менять значения битов в строке пробовали? Например на все нули?

wadim2 29.07.2021 12:40

У меня он текстовый и содержит явно символ "h", как если бы я руками записал в файл сивмол "h". Не имеет смысла менять на нули. Вы сами запускали Ваш код? Даже в интернете пишут что php не пишет бинарно, вот эта строка fopen("h.txt", "wb") в php не работает, из-за внутреннего бага php в реализации этой функции. У меня php 7.4

Белый шум 29.07.2021 13:49

wadim2,
прочитайте уже документацию на fopen в php, и для чего там предназначен флаг "b"...

wadim2 29.07.2021 15:00

Я читал. В моей теме явно написано: fopen (..., wb)


Часовой пояс GMT +3, время: 23:52.