📄 vtools.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 + -