[Visual C++] Konwerter tekstu do BASE64
Ostatnio zmodyfikowano 2013-10-24 21:35
Drazz Temat założony przez niniejszego użytkownika |
[Visual C++] Konwerter tekstu do BASE64 » 2013-10-24 17:44:07 Witam. Jestem początkujący więc z góry przepraszam za błędy i skrajną niewiedzę :D Otóż próbuje zrobić program, który wpisany przez użytkownika tekst w "textBox1" zamieni na tekst w base64 i wyświetli go w "label1" po naciśnięciu buttona "zamień". Znalazłem ciekawy kod, ale wszystko działa tak jak chciałem w klasycznym win32, a muszę to mieć koniecznie w Visualu. Jak wiecie jak to zrobić to bardzo proszę o wskazówki :D a oto kod ktory działał w WIN32: base64.cpp
#include "base64.h" #include <iostream>
static const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/";
static inline bool is_base64( unsigned char c ) { return( isalnum( c ) ||( c == '+' ) ||( c == '/' ) ); }
std::string base64_encode( unsigned char const * bytes_to_encode, unsigned int in_len ) { std::string ret; int i = 0; int j = 0; unsigned char char_array_3[ 3 ]; unsigned char char_array_4[ 4 ]; while( in_len-- ) { char_array_3[ i++ ] = *( bytes_to_encode++ ); if( i == 3 ) { char_array_4[ 0 ] =( char_array_3[ 0 ] & 0xfc ) >> 2; char_array_4[ 1 ] =(( char_array_3[ 0 ] & 0x03 ) << 4 ) +(( char_array_3[ 1 ] & 0xf0 ) >> 4 ); char_array_4[ 2 ] =(( char_array_3[ 1 ] & 0x0f ) << 2 ) +(( char_array_3[ 2 ] & 0xc0 ) >> 6 ); char_array_4[ 3 ] = char_array_3[ 2 ] & 0x3f; for( i = 0;( i < 4 ); i++ ) ret += base64_chars[ char_array_4[ i ] ]; i = 0; } } if( i ) { for( j = i; j < 3; j++ ) char_array_3[ j ] = '\0'; char_array_4[ 0 ] =( char_array_3[ 0 ] & 0xfc ) >> 2; char_array_4[ 1 ] =(( char_array_3[ 0 ] & 0x03 ) << 4 ) +(( char_array_3[ 1 ] & 0xf0 ) >> 4 ); char_array_4[ 2 ] =(( char_array_3[ 1 ] & 0x0f ) << 2 ) +(( char_array_3[ 2 ] & 0xc0 ) >> 6 ); char_array_4[ 3 ] = char_array_3[ 2 ] & 0x3f; for( j = 0;( j < i + 1 ); j++ ) ret += base64_chars[ char_array_4[ j ] ]; while(( i++ < 3 ) ) ret += '='; } return ret; }
std::string base64_decode( std::string const & encoded_string ) { int in_len = encoded_string.size(); int i = 0; int j = 0; int in_ = 0; unsigned char char_array_4[ 4 ], char_array_3[ 3 ]; std::string ret; while( in_len-- &&( encoded_string[ in_ ] != '=' ) && is_base64( encoded_string[ in_ ] ) ) { char_array_4[ i++ ] = encoded_string[ in_ ]; in_++; if( i == 4 ) { for( i = 0; i < 4; i++ ) char_array_4[ i ] = base64_chars.find( char_array_4[ i ] ); char_array_3[ 0 ] =( char_array_4[ 0 ] << 2 ) +(( char_array_4[ 1 ] & 0x30 ) >> 4 ); char_array_3[ 1 ] =(( char_array_4[ 1 ] & 0xf ) << 4 ) +(( char_array_4[ 2 ] & 0x3c ) >> 2 ); char_array_3[ 2 ] =(( char_array_4[ 2 ] & 0x3 ) << 6 ) + char_array_4[ 3 ]; for( i = 0;( i < 3 ); i++ ) ret += char_array_3[ i ]; i = 0; } } if( i ) { for( j = i; j < 4; j++ ) char_array_4[ j ] = 0; for( j = 0; j < 4; j++ ) char_array_4[ j ] = base64_chars.find( char_array_4[ j ] ); char_array_3[ 0 ] =( char_array_4[ 0 ] << 2 ) +(( char_array_4[ 1 ] & 0x30 ) >> 4 ); char_array_3[ 1 ] =(( char_array_4[ 1 ] & 0xf ) << 4 ) +(( char_array_4[ 2 ] & 0x3c ) >> 2 ); char_array_3[ 2 ] =(( char_array_4[ 2 ] & 0x3 ) << 6 ) + char_array_4[ 3 ]; for( j = 0;( j < i - 1 ); j++ ) ret += char_array_3[ j ]; } return ret; }
test.cpp #include "base64.h" #include <iostream>
int main() { std::cout << "Wpisz tekst" << std::endl; std::string tekst; std::cin >> tekst; std::string encoded = base64_encode( reinterpret_cast < const unsigned char *>( tekst.c_str () ), tekst.length() ); std::string decoded = base64_decode( encoded ); std::cout << "Twoj tekst w base64: " << encoded << std::endl; system( "PAUSE" ); return 0; }
Oczywiście kod nie jest mojego autorstwa. Z góry dziękuje. |
|
pekfos |
» 2013-10-24 18:32:43 |
|
kubawal |
» 2013-10-24 18:36:25 Co Ci nie działa w VC? |
|
Drazz Temat założony przez niniejszego użytkownika |
» 2013-10-24 19:56:41 Nie działa mi nic krótko mówiąc. Mysle ze wystarczająco przedstawilem problem... |
|
pekfos |
» 2013-10-24 19:57:28 |
|
Drazz Temat założony przez niniejszego użytkownika |
» 2013-10-24 20:01:00 Działa w WIN32. Nie wiem co zrobić przy przerobić to na okienka. Rozumiem ze musze dolaczec ten plik do projektu, ale nie wiem jak złożyć plik test.cpp z formatką. |
|
pekfos |
» 2013-10-24 20:11:51 |
|
Drazz Temat założony przez niniejszego użytkownika |
» 2013-10-24 21:35:34 Dzięki za pomoc... |
|
« 1 » |