Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl | Base64. Теория и практика

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Anton_Y



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот сижу и пытаюсь разобрать логику алгоритма декодирования из base64

Код:
 
1. sub dbase64  
2. {
3. my $str = shift;  
4. my $res = "";  
5. $str =~ tr|A-Za-z0-9+=/||cd;  
6. $str =~ s/=+$//;  
7. $str =~ tr|A-Za-z0-9+/| -_|;  
8. while ($str =~ /(.{1,60})/gs)  
9. {
10. my $len = chr(32 + length($1)*3/4);
11. $res .= unpack("u", $len . $1 );
12. }
13. return $res;
14. }
 

 
5 строка - удаление всех символов вне алфовита base64.  
6 строка - удаление всех оконцовок
7 строка - конвертирование в uuencoded формат. Вот тут я не понял... Как работает. Ведь это обычная транслитерация. Как это алфовит base64 преобразовался в uue.. ведь это обычная замена.. или я не понял?  
8 строка - почему .{1,60}? вроде по стандарту 70 с чем то строка может быть..
10 строка - вычисляем длину закодированной строки
11 строка - тут вроде ясно..
 

Всего записей: 581 | Зарегистр. 04-09-2002 | Отправлено: 12:18 24-04-2005 | Исправлено: Anton_Y, 12:19 24-04-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
7 строка - Как это алфовит base64 преобразовался в uue..
UUE от Base64 мало чем отличается. Если быть точнее - всего лишь таблицей кодировки.
Цитата:
8 строка - почему .{1,60}? вроде по стандарту 70 с чем то строка может быть..
А при чём здесь сколько может быть по стандарту, когда в $str уже давно нет никаких строк - от них избавились ещё в строке 5? 60 взято лишь из соображения удобства - с таким же успехом можно было взять любое другое число, кратное 3м.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 13:18 24-04-2005 | Исправлено: SiMM, 13:22 24-04-2005
Anton_Y



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SiMM
я не пойму как обычной транслитерацией пореобразовали форматы..
ведь

Код:
 
$test='abc';
$test=~tr/abc/def/;
print $test; # def
 

дает def на выходе
 
а почему тогда

Код:
 
$test='abc';
$test=~tr/abc/ -_/;
print $test; #  !"
 

дает уже [пробел]!"
 
чёто я не пойму =) тут битовые операции какието чтоли..?

Всего записей: 581 | Зарегистр. 04-09-2002 | Отправлено: 13:46 24-04-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Anton_Y, мануал по tr посмотри. Ты же сам указал, что a надо превратить в пробел, b - в символ с кодом, на единицу большим пробела (получается !), c - в символ с кодом, на два больим, чем у пробела (получается ")

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 21:52 24-04-2005
Anton_Y



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SiMM
Хм..Смотрел конечно =)
 
а я думал, что должно выйти нечто такое

Код:
 
$test='abc';
$test=~tr/abc/ -_/;
print $test; #  
 

[пробел]-_

Всего записей: 581 | Зарегистр. 04-09-2002 | Отправлено: 07:15 25-04-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Значок "-" означает диапазон. Почему-то в левой части выражения тебя это ничуть не смущало

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 09:21 25-04-2005
Anton_Y



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SiMM
век живи век учись... =)  

Всего записей: 581 | Зарегистр. 04-09-2002 | Отправлено: 06:39 26-04-2005
Nemos19

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извините а можно пакетно файлы base64 в одной папке перекодировать в картинки в другую папку на компе?

Всего записей: 55 | Зарегистр. 23-06-2011 | Отправлено: 10:32 26-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nemos19
а при чем тут перл? какая ОС?

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 19:44 26-09-2019
Nemos19

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не причем, W10
есть папка в ней файлы 001, 002, ..., текcтовые base64 надо их конвертировать в jpg в другую папку на компе, потом соберу их в PDF. Но есть только онлайн сервисы по одному файлу, а их более 500 в книге. как-бы муторно ...

Всего записей: 55 | Зарегистр. 23-06-2011 | Отправлено: 20:56 26-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nemos19
ну, так зачем тогда в эту тему ?) вам сюда - Сценарии для Windows + утилита https://www.proxoft.com/base64.aspx

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:58 26-09-2019
Nemos19

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
https://yadi.sk/d/-qEHmJCs44P43w
 
Маленький архив первых 7-ми файлов.

Всего записей: 55 | Зарегистр. 23-06-2011 | Отправлено: 20:59 26-09-2019
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl | Base64. Теория и практика


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru