📄 b64.cc
字号:
/* Name : b64** File : b64.cc** Author : Inconnu** Description : Permet d'encoder et de decoder des fichiers en BASE64**** Version : ** Note : ** Mail : ** Copyright : */#include <stdio.h>#include <stdlib.h>static const char cb64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";static const char cd64[]="|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[\\]^_`abcdefghijklmnopq";void encodeblock( unsigned char in[3], unsigned char out[4], int len ){ out[0] = cb64[ in[0] >> 2 ]; out[1] = cb64[ ((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4) ]; out[2] = (unsigned char) (len > 1 ? cb64[ ((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6) ] : '='); out[3] = (unsigned char) (len > 2 ? cb64[ in[2] & 0x3f ] : '=');}void encode( FILE *infile, FILE *outfile, int linesize ){ unsigned char in[3], out[4]; int i, len, blocksout = 0; while( !feof( infile ) ) { len = 0; for( i = 0; i < 3; i++ ) { in[i] = (unsigned char) getc( infile ); if( !feof( infile ) ) { len++; } else { in[i] = 0; } } if( len ) { encodeblock( in, out, len ); for( i = 0; i < 4; i++ ) { putc( out[i], outfile ); } blocksout++; } if( blocksout >= (linesize/4) || feof( infile ) ) { if( blocksout ) { fprintf( outfile, "\r\n" ); } blocksout = 0; } }}void decodeblock( unsigned char in[4], unsigned char out[3] ){ out[ 0 ] = (unsigned char ) (in[0] << 2 | in[1] >> 4); out[ 1 ] = (unsigned char ) (in[1] << 4 | in[2] >> 2); out[ 2 ] = (unsigned char ) (((in[2] << 6) & 0xc0) | in[3]);}void decode( FILE *infile, FILE *outfile ){ unsigned char in[4], out[3], v; int i, len; while( !feof( infile ) ) { for( len = 0, i = 0; i < 4 && !feof( infile ); i++ ) { v = 0; while( !feof( infile ) && v == 0 ) { v = (unsigned char) getc( infile ); v = (unsigned char) ((v < 43 || v > 122) ? 0 : cd64[ v - 43 ]); if( v ) { v = (unsigned char) ((v == '$') ? 0 : v - 61); } } if( !feof( infile ) ) { len++; if( v ) { in[ i ] = (unsigned char) (v - 1); } } else { in[i] = 0; } } if( len ) { decodeblock( in, out ); for( i = 0; i < len - 1; i++ ) { putc( out[i], outfile ); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -