⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vtools.cpp

📁 symbian平台S60_2nd_FP2_SC rtp实现
💻 CPP
字号:


#include <eikenv.h>
#include <AknUtils.h> 
#include <ctype.h>

#include "VTypes.h"
#include "VTools.h"
#include "cpLog.h"

/* ----------------------------------------------------------------- */
/* --- Number Functions -------------------------------------------- */
/* ----------------------------------------------------------------- */

/*  prints raw bits of memory */
void printBits (char* packetData, int len)
{
    unsigned short int b;
    unsigned int c = 0;
//    cerr << "\n-----------------------------------\n";
    for (int i = 0; i < len; i++)
    {
        if (i % 4 == 0 && i != 0)
        {
            printf ("  %2.2X%2.2X%2.2X%2.2X\n",
                    static_cast < unsigned char > (packetData[i - 4]),
                    static_cast < unsigned char > (packetData[i - 3]),
                    static_cast < unsigned char > (packetData[i - 2]),
                    static_cast < unsigned char > (packetData[i - 1])
                   );
            c = 0;
        }
        b = static_cast < unsigned short int > (
                static_cast < unsigned char > (packetData[i]));
        char out[9];
        for (int j = 0; j < 8; j++)
        {
            if (b % 2)
                out[7 - j] = '1';
            else
                out[7 - j] = '0';
            c = 2 * c + b % 2;
            b = b >> 1;
        }
        out[8] = '\0';
//        cerr << out;
//        cerr << " ";
    }
}

void printInt(int x)
{
    char* packetData = reinterpret_cast < char* > (&x);
    for (int i = 0; i < 4; i++)
    {
        char out[9];
        unsigned short int b = static_cast < unsigned short int > (
                                   static_cast < unsigned char > (packetData[i]));
        for (int j = 0; j < 8; j++)
        {
            if (b % 2)
                out[7 - j] = '1';
            else
                out[7 - j] = '0';
            b = b >> 1;
        }
        out[8] = '\0';
//        cerr << out;
  //      cerr << " ";
    }
    printf ("  %2.2X%2.2X%2.2X%2.2X\n",
            static_cast < unsigned char > (packetData[0]),
            static_cast < unsigned char > (packetData[1]),
            static_cast < unsigned char > (packetData[2]),
            static_cast < unsigned char > (packetData[3])
           );
    return ;
}



void TBuf2Str( char* str, TDesC& buf )
{
	for (TInt i=0; i< buf.Length(); i++)
	{
		if ( buf[ i ] / 0x100 )
			*str++ = (char)(buf[ i ] / 0x100);
		*str++ = (char)(buf[i] % 0x100);
	}
	*str = 0;
}

void Str2TBuf1V1( TDes8& buf, char* str)
{
	for ( int i = 0; i < strlen(str); i++ ) {
		buf.Append( str[ i ] );
	}
}

void Str2TDes8( TDes8& buf, char* str ,TInt length)
{
	for ( int i = 0; i < length; i++ ) {
		buf.Append( str[ i ] );
	}
}

void Str2TBuf( TDes& buf, char* str )
{
//	for ( TInt i = 0; i < strlen( str ); i++ )
//	{
//		char tmp = str[i];
//		buf.Append(reinterpret_cast<TUint16*> (&tmp),1);
//	}

	if( !str) return;
	TInt size = strlen(str);

	HBufC8 * ptr8 = HBufC8::New(size);
	if( !ptr8) return;
	HBufC * ptr = HBufC::New(size);
	if( !ptr) return;

	Str2TBuf1V1(ptr8->Des(),str);
	CnvUtfConverter::ConvertToUnicodeFromUtf8(ptr->Des(),ptr8->Des());
	buf.Copy(ptr->Des());
}
 
void RandomFileName( char* file )
{
	_LIT(KFormatTxt,"%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B");
	char	path[ 128 ];

	TBuf<32> iBuf;

	int i,j;

	TTime * iTime=new (ELeave) TTime;
	iTime->HomeTime(); 
	iTime->FormatL(iBuf,KFormatTxt);

		for ( i=0, j=0; j < iBuf.Length() && i < 14; i++, j++ )
		{
			while( iBuf[ j ] < '0' || iBuf[ j ] > '9' ) { 
				j++;
				if ( j >= iBuf.Length() )
					goto Lable_end;
			}
			file[i] = iBuf[j];
		}
Lable_end:
		file[ i ] = '\0';

	delete iTime;
}

void RandomFileName( TDes& file )
{
	_LIT(KFormatTxt,"%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B");
	char	path[ 128 ];

	TBuf<32> iBuf;

	int i,j;

	TTime * iTime=new (ELeave) TTime;
	iTime->HomeTime(); 
	iTime->FormatL(iBuf,KFormatTxt);

		for ( i=0, j=0; j < iBuf.Length() && i < 14; i++, j++ )
		{
			while( iBuf[ j ] < '0' || iBuf[ j ] > '9' ) { 
				j++;
				if ( j >= iBuf.Length() )
					goto Lable_end;
			}
			file.Append( iBuf[ j ] );
		}
Lable_end:

	delete iTime;
}

void Unicode2UTF8( char* str, TDesC& buf )
{
	TPtr8	ptr( (TUint8*)str, 3 * buf.Length() );

	CnvUtfConverter* icov = new CnvUtfConverter;
	icov->ConvertFromUnicodeToUtf8( ptr, buf );
	delete icov;

	str[ ptr.Length() ] = 0;
}

void UTF82Unicode( TDes& buf, char* str )
{
	buf.Zero();

	if(!str)
		return;
	int len = strlen( str );
	if(len==0)
		return ;
	
	TPtr8	ptr( (TUint8*)str, len, len );

	CnvUtfConverter* icov = new CnvUtfConverter;
	icov->ConvertToUnicodeFromUtf8( buf, ptr );
	delete icov;
}

void UTF82Unicode( TDes& buf, TPtrC8 str )
{
	CnvUtfConverter* icov = new CnvUtfConverter;
	icov->ConvertToUnicodeFromUtf8( buf, str );
	delete icov;
}


void Gbk2Unicode( TDes& buf, char* str )
{
	int len = strlen( str );
	TPtr8	ptr( (TUint8*)str, len, len );

	CCnvCharacterSetConverter* converter = CCnvCharacterSetConverter::NewLC();
	TInt state = CCnvCharacterSetConverter::KStateDefault;
	if ( CCnvCharacterSetConverter::EAvailable !=
			converter->PrepareToConvertToOrFromL( KCharacterSetIdentifierGbk,
												  CEikonEnv::Static()->FsSession() ) )
		User::Leave( KErrNotSupported );
	converter->ConvertToUnicode( buf, ptr, state );
	CleanupStack::PopAndDestroy();
}

void Unicode2Gbk( char* str, TDes& buf )
{
}

void Unicode2ASCII( TDes8& aBuf8, TDes& buf )
{
	CCnvCharacterSetConverter* converter = CCnvCharacterSetConverter::NewLC();
	TInt state = CCnvCharacterSetConverter::KStateDefault;
	if ( CCnvCharacterSetConverter::EAvailable !=	
			converter->PrepareToConvertToOrFromL( KCharacterSetIdentifierAscii, 
																						CEikonEnv::Static()->FsSession() ) )
	{
		User::Leave( KErrNotSupported );
	}
	converter->ConvertFromUnicode( aBuf8, buf, state );
	CleanupStack::PopAndDestroy();
}

void Gb23122Unicode( TDes& buf, char* str )
{
	int len = strlen( str );
	TPtr8	ptr( (TUint8*)str, len, len );

	CCnvCharacterSetConverter* converter = CCnvCharacterSetConverter::NewLC();
	TInt state = CCnvCharacterSetConverter::KStateDefault;
	if ( CCnvCharacterSetConverter::EAvailable !=
			converter->PrepareToConvertToOrFromL( KCharacterSetIdentifierGb2312,
												  CEikonEnv::Static()->FsSession() ) )
		User::Leave( KErrNotSupported );
	converter->ConvertToUnicode( buf, ptr, state );
	CleanupStack::PopAndDestroy();
}


void WriteFile(TDesC8 & data)
{
	TBuf<256> tmpFile(_L("C:\\writeFile.log"));
	RFile file;
	TInt nErr;
	RFs& fs = CEikonEnv::Static()->FsSession();
	nErr = fs.MkDirAll(tmpFile);
	nErr = file.Open(fs,tmpFile,EFileWrite);
	if ( nErr == KErrNone )
	{
		file.Close();
		fs.Delete(tmpFile);
	}

	nErr = file.Create(fs,tmpFile,EFileWrite);

	// 写文件
	file.Write(data);
	file.Close();
}

void ReadFile(char * ptr,int& length)
{
	TBuf<256> tmpFile(_L("C:\\writeFile.log"));
	RFile file;
	TInt nErr = file.Open(CEikonEnv::Static()->FsSession(),tmpFile,EFileShareReadersOnly);

	TInt nSize(0);
	file.Size(nSize);
	HBufC8* sdata = HBufC8::NewL(nSize);
	if (!sdata)
	{
		file.Close();
	}
	TPtr8   ptr8(sdata->Des());

	
	file.Read(ptr8,nSize);
	file.Close();

	memcpy(ptr,(char *)ptr8.Ptr(),nSize);
	length = nSize;

	delete sdata;
	sdata = NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -