我的程序如下
声明了
unsigned char * aDest;
const char * aSrc;
int len;
我写了这么一个方法,主要实现Base64解码,这个方法最后实现的是经过解码,把值赋到aDest上.
但是在调这个方法传值的时候,如果不赋一个值得话,最后返回来这个参数aDest是空的,
但是我写上memset(aDest,0,sizeof(aDest)),报错.
int CRrrDlg::Base64Decode(const char * aSrc,unsigned char * aDest)
{
unsigned char * p = aDest;
int i, n = strlen( aSrc );
unsigned char c, t;
for ( i = 0; i < n; i++ )
{
if ( *aSrc == '=' )
break;
do
{
if ( *aSrc )
c = Chr2Base( *aSrc++ );
else
c = 65; // 字符串结束
} while ( c == 64 ); // 跳过无效字符,如回车等
if ( c == 65 )
break;
switch ( i % 4 )
{
case 0 :
t = c << 2;
break;
case 1 :
*p++ = ( unsigned char )( t | ( c >> 4 ) );
t = ( unsigned char )( c << 4 );
break;
case 2 :
*p++ = ( unsigned char )( t | ( c >> 2 ) );
t = ( unsigned char )( c << 6 );
break;
case 3:
*p++ = ( unsigned char )( t | c );
break;
}
}
return (int)( p-aDest);
}
请教各位高手了,这是任务的最后一天了 .高分相送阿
声明了
unsigned char * aDest;
const char * aSrc;
int len;
我写了这么一个方法,主要实现Base64解码,这个方法最后实现的是经过解码,把值赋到aDest上.
但是在调这个方法传值的时候,如果不赋一个值得话,最后返回来这个参数aDest是空的,
但是我写上memset(aDest,0,sizeof(aDest)),报错.
int CRrrDlg::Base64Decode(const char * aSrc,unsigned char * aDest)
{
unsigned char * p = aDest;
int i, n = strlen( aSrc );
unsigned char c, t;
for ( i = 0; i < n; i++ )
{
if ( *aSrc == '=' )
break;
do
{
if ( *aSrc )
c = Chr2Base( *aSrc++ );
else
c = 65; // 字符串结束
} while ( c == 64 ); // 跳过无效字符,如回车等
if ( c == 65 )
break;
switch ( i % 4 )
{
case 0 :
t = c << 2;
break;
case 1 :
*p++ = ( unsigned char )( t | ( c >> 4 ) );
t = ( unsigned char )( c << 4 );
break;
case 2 :
*p++ = ( unsigned char )( t | ( c >> 2 ) );
t = ( unsigned char )( c << 6 );
break;
case 3:
*p++ = ( unsigned char )( t | c );
break;
}
}
return (int)( p-aDest);
}
请教各位高手了,这是任务的最后一天了 .高分相送阿
可以这样:aDest = new unsigned char[1024];
用完后要删除:delete []aDest;
还有,就是用数组,如下:unsigned char aDest[1024]
aDest = new unsigned char[1024];
用完后要删除:delete []aDest;