Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ загрузить бинарный файл в массив

Автор: Rian 2.07.2010 0:40

сдрасте
у меня есть двоичный файл размер 14 байт (14 чисел), созданный в делфях

мне нужно загрузить на пхп этот файл в массив... сделать изменения в числах... сохранить этот файл обратно
я это делаю так (загружаю)

Код

<?php
$data=file('data.dat');
$x=$data[0]+$data[1]+5;
echo $x.'<br>';
echo ($data[2].'<br>';
?>

на экран выходит одно число "5"

ЗЫ. почему-то при написании программ на пхп многие переменные у меня начинаются на n x s b pi

Автор: Rian 5.07.2010 15:37

ну правда надо

Автор: Lapp 5.07.2010 16:35

Цитата(Rian @ 1.07.2010 21:40) *
у меня есть двоичный файл размер 14 байт (14 чисел), созданный в делфях
...
на экран выходит одно число "5"

Ты правда полагаешь, что можешь читать двоичную информацию без указания формата данных? откуда машине знать, как ты писал?..

Самое лучшее - записывать текст, если уж ты сам его пишешь, и читать текст.
Двоичная информация - она МАШИНОЗАВИСИМА, что в корне противоречит идеологии PHP. Это неверный подход по своей сути. Постарайся этого избежать, если это возможно.

Автор: Rian 5.07.2010 18:34

sad.gif от невдобство
значит будем обходиться без двоичной

Автор: Lapp 6.07.2010 7:32

Цитата(Rian @ 5.07.2010 15:34) *
sad.gif от невдобство

В чем именно неудобство?
Длинный файл? 14 или там 100 байт? не смеши ))
Не хочешь, чтоб файл был читабельным? Бинарность все равно не защита - шифруй.
Кроссплатформенность - сильное требование, и оно вполне оправдано. Имей это в виду, когда программируешь для www.

Автор: Rian 6.07.2010 23:56

Цитата(Lapp @ 6.07.2010 3:32) *

В чем именно неудобство?

удобно, что не нужно преобразовывать типы, ну и место экономится)))

если может вы догадались это для калаха файл имеет структуру
666 666 0 666 666 0

вот и в ячейке вполне может существовать число состоящих из двух символов 12 0 6 0 12 6
я хотел избавится от перехода из текстового режима в двоичный

так.. хотя там вроде есть функция "explode" кажется так? которая упрощает это дело

ЗЫ а если бы мне нужно было делать лабораторку и препод сказал: "Расшибись но сделай бинарным"?

Автор: Lapp 7.07.2010 5:52

Цитата(Rian @ 6.07.2010 20:56) *
удобно, что не нужно преобразовывать типы, ну и место экономится)))
если может вы догадались это для калаха файл имеет структуру
666 666 0 666 666 0

вот и в ячейке вполне может существовать число состоящих из двух символов 12 0 6 0 12 6
я хотел избавится от перехода из текстового режима в двоичный
Не нужно экономить место. Какой смысл, если файл все равно занимает как минимум блок? blink.gif
Хорошо, если появилось смысловое наполнение, скажу по нему.
Гораздо удобнее, когда файл текстовый. Держу пари, тебе захочется (при отладке или потом, так как ошибки могут вылезти в любое время при эксплуатации) однажды БЫСТРО проверить на каких-то конкретных данных. Что ты будешь делать? Самое простое - в любом редакторе создать текстовый файл и на нем все опробовать.

Цитата
так.. хотя там вроде есть функция "explode" кажется так? которая упрощает это дело
есть explode(), есть str_split() и не только. В PHP все заточено под строки. Вникни в эту концепцию, и ты увидишь, что это удобно и правильно. Потом начнешь привлекать регулярные выражения, и уже не сможешь без строк, потому что это часть функциональности языка, а не просто формат данных.

Цитата
ЗЫ а если бы мне нужно было делать лабораторку и препод сказал: "Расшибись но сделай бинарным"
Тогда fread(), например. Читаешь файл в строку, а потом строку разбираешь по байтам ручками..