Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2021, 12:26
Интересующийся
Отправить личное сообщение для wadim2 Посмотреть профиль Найти все сообщения от wadim2
 
Регистрация: 01.09.2020
Сообщений: 19

Как писать бинарно в файл на php
Всем привет! Подскажите пожалуйста, как писать бинарно в файл. Есть строка, она двоичная, но по сути это просто строка: 010101
Вот нужно взять каждый байт и записать его как бит в файл. То есть, берем 0, как бы превращаем в бит и пишем в файл. Стандартная fopen (..., wb) не работает, баг php.
Ответить с цитированием
  #2 (permalink)  
Старый 25.07.2021, 03:26
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

wadim2,
fopen не так работает.
Берёшь первые 8 символов, преобразуешь в int с помощью intval, затем это значение преобразуешь в символ и записываешь в файл:
php -r '$fp=fopen("h.txt", "wb"); $c=intval("01101000", 2); fwrite($fp, chr($c));'
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2021, 10:36
Интересующийся
Отправить личное сообщение для wadim2 Посмотреть профиль Найти все сообщения от wadim2
 
Регистрация: 01.09.2020
Сообщений: 19

Не работает. Вы файл получаемый смотрели, когда запускали код? Это просто текстовый файл получается, а нужно чтоб он был бинарным.
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2021, 11:14
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

wadim2,
он бинарный, состоит из битов "01101000", что соответствует ASCII коду символа "h". Или как, по вашему, должен выглядеть бинарный файл?
Вы менять значения битов в строке пробовали? Например на все нули?
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2021, 12:40
Интересующийся
Отправить личное сообщение для wadim2 Посмотреть профиль Найти все сообщения от wadim2
 
Регистрация: 01.09.2020
Сообщений: 19

У меня он текстовый и содержит явно символ "h", как если бы я руками записал в файл сивмол "h". Не имеет смысла менять на нули. Вы сами запускали Ваш код? Даже в интернете пишут что php не пишет бинарно, вот эта строка fopen("h.txt", "wb") в php не работает, из-за внутреннего бага php в реализации этой функции. У меня php 7.4
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2021, 13:49
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

wadim2,
прочитайте уже документацию на fopen в php, и для чего там предназначен флаг "b"...
Ответить с цитированием
  #7 (permalink)  
Старый 29.07.2021, 15:00
Интересующийся
Отправить личное сообщение для wadim2 Посмотреть профиль Найти все сообщения от wadim2
 
Регистрация: 01.09.2020
Сообщений: 19

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как распечатать/выгрузить файл на диск? nmurzin AJAX и COMET 14 12.01.2021 15:54
php и javascript. Как начать? Jesprch Общие вопросы Javascript 1 08.05.2014 16:21
Как передавать параметры из php скрипта в js imissyouso Общие вопросы Javascript 3 01.08.2012 18:24
Как писать код который легко поддерживать, расширять, читать. Policeman Общие вопросы Javascript 3 24.03.2012 05:40
Как обновить PHP в XAMPP до версии 5.4.0 и выше? jsuse Серверные языки и технологии 1 02.03.2012 21:05