LINUX.ORG.RU

Как писать бинарно в файл на php

 


0

1

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

просто строка: 010101 Вот нужно взять каждый байт и записать его как бит в файл

Здесь нету даже одног байта. Как Вы собрались байт писать в виде бита?

берем 0, как бы превращаем в бит

Что?

бит и пишем в файл

Бит нельзя, можно только по одной трети бита. 😂

erfea ★★★★★ ()

Открыть файл для записи бинарно, записать.

010101

Их же 6.

Стандартная fopen (…, wb) не работает, баг php

Что ещё за баг?

fernandos ★★★ ()

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

Вам нужно преобразовать сначала строку с «0» и «1» в двоичный буфер, а затем уже производить запись буфера в файл.
Вообщем логика здесь простая.
См. операторы и функции для работы с битами …

anonymous ()
Ответ на: комментарий от anonymous

ему нужна готовая библиотека с готовыми функциями:

write_first_bit_to_byte ();
write_second_bit_to_byte ();
write_third_bit_to_byte ();
write_fourth_bit_to_byte ();
write_fifth_bit_to_byte ();
write_sixth_bit_to_byte ();
write_seventh_bit_to_byte ();
write_eighth_bit_to_byte ();

а лучшее сразу бит в поток исходящий писать, чтобы вот, а не вото что ты тут теориями и прочими умностями обмазываешь иго, он чё древний погромист штоль, шоб еще в алгоритмах ковырятца…

pfg ★★★★★ ()
Последнее исправление: pfg (всего исправлений: 1)

ТС, гугли «write eighth bit to byte PHP»

anonymous ()

Считываешь из строки 32 знака, потом преобразуешь с помощью intval с основанием 2 в число, которое записываешь.

xmikex ★★★★ ()
Последнее исправление: xmikex (всего исправлений: 1)

Вот тебе решение, смерд:

implode('', array_map('chr', array_map('bindec', str_split("110100001010001011010001100000111101000010111111110100001011000011010001100011110010000011010001100010001101000010111011110100011000111011010001100001011101000010110000", 8))));

Как потом строку записать в файл сам сообразишь.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Ну там имелась ввиду «0101010…», т. е. строка с ‘0’ и ‘1’. Так-то они везде бинарные. Очевидно же.

anonymous ()
Ответ на: комментарий от anonymous

Так-то они везде бинарные

Так-то во многих случаях они нуль-терминированные и не могут хранить бинарные данные.

no-such-file ★★★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей