Помощь - Поиск - Пользователи - Календарь
Полная версия: загрузить бинарный файл в массив
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Rian
сдрасте
у меня есть двоичный файл размер 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
ну правда надо
Lapp
Цитата(Rian @ 1.07.2010 21:40) *
у меня есть двоичный файл размер 14 байт (14 чисел), созданный в делфях
...
на экран выходит одно число "5"

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

Самое лучшее - записывать текст, если уж ты сам его пишешь, и читать текст.
Двоичная информация - она МАШИНОЗАВИСИМА, что в корне противоречит идеологии PHP. Это неверный подход по своей сути. Постарайся этого избежать, если это возможно.
Rian
sad.gif от невдобство
значит будем обходиться без двоичной
Lapp
Цитата(Rian @ 5.07.2010 15:34) *
sad.gif от невдобство

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

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

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

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

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

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

ЗЫ а если бы мне нужно было делать лабораторку и препод сказал: "Расшибись но сделай бинарным"?
Lapp
Цитата(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(), например. Читаешь файл в строку, а потом строку разбираешь по байтам ручками..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.