Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Mime::Base64 - странная ошибка 
V
    Опции темы
infarch
Дата 13.1.2012, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



Возникла необходимость перегнать файл из base64 в бинарный. Так как файл огромный, решил не грузить его целиком в память, а читать порциями, перекодировать и писать в результат. Насколько я понял теорию, длина порции должна быть кратна 4. И вот, чтобы проверить эту идею, я набросал маленький скрипт:

Код

sub test_b {
    my $str = "If you want to encode a large file, you should encode it in chunks that are a multiple of 57 bytes.";
    my $bb = encode_base64($str);
    my @chars = split '', $bb;
    my $test = '';
    my $buffer = '';
    foreach my $c (@chars){
        $buffer.=$c;
        if(length $buffer == 8){
            $test .= decode_base64($buffer);
            $buffer = '';
        }
    }
    if (length $buffer > 0){
        while (length $buffer < 4){
            $buffer .= '=';
        }
        $test .= decode_base64($buffer);
    }
    print $test;
}



Но работает он с весьма странной ошибкой: после определенного момента выдает мусор вместо исходных символов:

"If you want to encode a large file, you should encode it inБНб╒╣н╠Б╤бЕ╨БЕ╔Ф..."

Может кто нибудь подсказать где ошибка?


Это сообщение отредактировал(а) infarch - 13.1.2012, 19:12
PM MAIL   Вверх
DurRandir
Дата 14.1.2012, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 335
Регистрация: 27.9.2009

Репутация: 14
Всего: 17



Цитата
The returned encoded string is broken into lines of no more than 76 characters each

PM   Вверх
infarch
Дата 15.1.2012, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



Огромное спасибо за подсказку! Надо же, я ведь это несколько раз перечитал, но вот не соотнес с моим багом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.