Автор Тема: Двоичные файлы  (Прочитано 4016 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Unregistered

  • Гость
Двоичные файлы
« : 26 Июля 2002, 13:38:38 »
Всем привет!
Народ подскажите, как в перле писать двоичные файлы, чтоб их содержимое с легкостью могла проанализировать С-программа? Про функцию binmode знаю, но она не работает почему-то, т.е. пишу число 4325345, оно записывается как текст, а нужно в двоичном виде.
И второй вопрос, как узнать сколько байт записывается?
Как записать конкретное число байт?
Спасибо.

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Двоичные файлы
« Ответ #1 : 26 Июля 2002, 13:51:06 »
Всем привет!
Народ подскажите, как в перле писать двоичные файлы, чтоб их содержимое с легкостью могла проанализировать С-программа? Про функцию binmode знаю, но она не работает почему-то, т.е. пишу число 4325345, оно записывается как текст, а нужно в двоичном виде.
И второй вопрос, как узнать сколько байт записывается?
Как записать конкретное число байт?
Спасибо.
З.Ы. А почему меня в игнор лист занесли?

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Двоичные файлы
« Ответ #2 : 26 Июля 2002, 22:46:37 »
Насколько я помню 1байт = 1 символ, дык организуй простеший цикл:
my $i;
my $bayt=300;#количество байт
my $symbol="1";#сивол, символизирующий один байт:-)
open FILE, "> file.txt";
if ($i<=$bayt){
print FILE $symbol;
$i++;}
close(FILE);
Цитировать
А почему меня в игнор лист занесли?

Видимо унрегистров выживают с форума:-), так что включи куки или запомни пароль:-).
« Последнее редактирование: 27 Июля 2002, 04:05:24 от glebushka »
Ну к чему все это, лучше бы водки выпили...

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Двоичные файлы
« Ответ #3 : 26 Июля 2002, 23:51:40 »
C++
Поищи в доках sysopen,sysread,syswrite.

КшЫуфксрук

  • Гость
Двоичные файлы
« Ответ #4 : 27 Июля 2002, 02:18:42 »
binmode всего лишь говорит Перлу, что символ конца строки нужно писать и читать как есть, без изменений. Для записи бинарных данных прочитай про pack/unpack. Например:

$num=453245;
print OUT pack("N",$num);

запишет ровно 4 байта (если OUT был в binmode открыт). У функции pack есть множество форматов записи чисел, выбери тот, который затем можно легко в Си распознать.

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Двоичные файлы
« Ответ #5 : 27 Июля 2002, 15:45:47 »
все равно нихера не выходит!!!
народ, может еще кто-нибудь знает другие способы?

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Двоичные файлы
« Ответ #6 : 27 Июля 2002, 16:45:30 »
open(X,">./file");
binmode(X);
print X pack("N*",4325345);
close X;
« Последнее редактирование: 27 Июля 2002, 16:51:06 от Serchey »

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Двоичные файлы
« Ответ #7 : 28 Июля 2002, 22:17:18 »
Цитировать
все равно нихера не выходит!!!

Выражаемся культурнее, да?
Предупреждение.
2B OR NOT 2B = FF

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Двоичные файлы
« Ответ #8 : 29 Июля 2002, 00:32:38 »
C++, ты зря на binmode() наежаешь - как я понял, ты просто её не туда тулишь.

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Двоичные файлы
« Ответ #9 : 29 Июля 2002, 06:14:03 »
to Serchey - огромное спасибо, все получилось и просто супер.
to Chs- это я так, сгоряча, просто сил моих уже не было, осознал, исправился.

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Двоичные файлы
« Ответ #10 : 29 Июля 2002, 10:50:02 »
From Serchey - незачто :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28