|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.10.2011, 00:19 | #1 |
Пользователь
Регистрация: 29.04.2009
Сообщений: 29
|
Декодер base64 не раскодирует картинки
Ребят, подскажите, почему программа не раскодирует закодированные картинки? Посмотрите, кому не сложно, пожалуйста=))
#include "stdafx.h" #include <iostream> #include <fstream> using namespace std; //по символу из файла base64 находим соответсвующee двоичное число вида 00****** для дальнейшей обработки unsigned char Base64Char(char b) { char q[66]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg hijklmnopqrstuvwxyz0123456789+/="; for (int i=0; i<65; i++) if (b==q[i]) return i; return 0; } //четыре байта информации из фаила base64 переводим в три байта информации файла в кодировке ascii void decoderbase64(char* sin, char* sout) { char a1,a2,a3; a1=a2=a3=0; a1=(sin[0]<<2)|((sin[1] & 0x30)>>4); if (sin[2]==64) a2=0; else a2=(sin[1]<<4)|(sin[2]>>2); if (sin[3]==64) a3=0; else a3=(sin[2]<<6)|(sin[3]); sout[0]=a1; sout[1]=a2; sout[2]=a3; } int main(int argc, char* argv[]) { char fname[1024]; if(argc>1) strcpy(fname, argv[1]); else{cout<<"Source file: "; cin.getline(fname,1024);} ifstream inFile(fname); if(!inFile){cout<<"Can not open file "<<fname<<endl; system("pause"); return 1;} if(argc>2) strcpy(fname,argv[2]); else {char w[5]; cout<<"Input rasshirenie of the file :"; cin>>w; strcat(fname, w);} ofstream outFile(fname); if(!outFile){cout<<"Can not write to file "<<fname<<endl; system("pause"); return 2;} int i=0;//бежим по символам в исходном файле //пока файл base64 не закончен берем из него по четыре байта ин-ции, обрабатываем в функции decoderbase64 и выводим в файл с нужным расширением char instr[4], outstr[3], x; while (!inFile.eof()) { i=0; inFile>>x; instr[i++]=Base64Char(x); inFile>>x; instr[i++]=Base64Char(x); inFile>>x; instr[i++]=Base64Char(x); inFile>>x; instr[i++]=Base64Char(x); decoderbase64(instr, outstr); outFile.write(outstr,3); } inFile.close(); outFile.close(); system ("pause"); return 0; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Base64 | GoldmasteR | Общие вопросы Delphi | 10 | 06.01.2011 18:37 |
Морзе декодер(с++) | jambas92 | Помощь студентам | 3 | 14.11.2010 11:32 |
base64 | beemoto | Общие вопросы Delphi | 0 | 24.04.2010 21:58 |
base64 | Dimarik | Win Api | 0 | 10.04.2010 18:59 |
base64 | BlackOmen | Общие вопросы Delphi | 2 | 02.05.2008 16:30 |