Symbian C++ 各种类型之间的转换

来源:互联网 发布:淘宝香港版 编辑:程序博客网 时间:2024/04/29 02:20
原创 Symbian C++ 各种类型之间的转换 收藏1.TTime转TBuf型TBuf<32> theTime;//存储转换后的时间TTime tt;tt.HomeTime();_LIT(KTimeFormat,"%Y%M%D%1-%2-%3 %H:%T:%S");//格式为:2006-03-04 12:12:12tt.FormatL(theTime,KTimeFormat);//FormatL()会以KTimeFormat字符串的形式来格式化时间在赋值给theTime2. TDateTime转TBuf型TTime currentTime;//声明一个TTime类型currentTime.HomeTime();//设置TTime为当前时间TDateTime tdt=currentTime.DateTime();//TTime ---> TDateTimeTBuf<32> tmp;//存储转换完的Buftmp.AppendNum(tdt.Year());//用AppendNum()方法将一个Tint加入到TBuf中。_LIT(gang,"-");//声明一个横线分隔年月日,同样可声明冒号分隔小时分秒tmp.Append(gang);tmp.AppendNum(tdt.Month());tmp.Append(gang);tmp.AppendNum(tdt.Day());…………时分秒的转换同上3. TBuf转Tint型// 15位数字TInt iNum1(123456789009876);// 将缓存的内容设置为iNum1iBuf.Num(iNum1);// 使用iBuf包含的内容创建TLex对象// the 15 digit numberTLex iLex(iBuf);// iNum1TInt iNum2;//iNum2现在包含了15位数字iLex.Val(iNum2);4. Tint转TBuf型TBuf<10>tmp;Tint ti=190;Tmp.AppendNum(ti);5. TBuf转TDateTime型将长的TBuf截成小段,分别是年月日时分秒,通过下面TBuf转TInt ,再分别把转换成TInt的年月日取出,通过TDateTime的setYear(),setMonth()等方法将时间set进TDateTime6. 其他转换TBuf 转换为 TPtrC16TBuf<32> tText(_L("2004/11/05 05:44:00"));TPtrC16 tPtrSecond=tText.Mid(17,2);TPtrC16 转换为 TBufC16TPtrC16 tPtrSecond=tText.Mid(17,2);TBufC16<10> bufcs(tPtrSecond);TBufC16 转换为 TPtr16TBufC16<10> bufcs(tPtrSecond);TPtr16 f=bufcs.Des();TPtr16 转换为 TBufTBuf<10> bufSecond;bufSecond.Copy(f);TBuf 转换为 TPtr16TBuf<10> bufSecond(_L("abc"));TPtr16 f;f.Copy(bufSecond);TBuf 转换为 TInt TInt aSecond; TLex iLexS(bufSecond); iLexS.Val(aSecond);TInt 转换为 TBuf TBuf<32> tbuf; TInt i=200; tbuf.Num(i);memset主要应用是初始化某个内存空间。用来对一段内存空间全部设置为某个字符。memcpy是用于COPY源空间的数据到目的空间中,用来做内存拷贝可以拿它拷贝任何数据类型的对象。strcpy只能拷贝字符串了,它遇到'/0'就结束拷贝。以下是S60的数据类型转换(巨有用)1.串转换成数字 TBuf16<20> buf(_L( "123" ) ); TLex lex( buf ); TInt iNum; lex.Val( iNum );2.数字转换成串 TBuf16<20> buf; TInt iNum = 20; buf.Format( _L( "%d" ) , iNum );3.将symbian串转换成char串 char* p = NULL; TBuf8<20> buf( _L( "aaaaa" ) ); p = (char *)buf.Ptr();4.UTF-8转换成UNICODE CnvUtfConverter::ConvertToUnicodeFromUtf8( iBuf16 , iBuf8 );5.UNICODE转换成UTF-8 CnvUtfConverter::ConvertFromUnicodeToUtf8( iBuf8 , iBuf16 );6.将char串转换成symbian串 char* cc = "aaaa"; TPtrC8 a; a.Set( (const TUint8*)cc , strlen(cc) );再加一点:TDesC8 & buf ;TUint8 * pdata ;pdata = buf.Ptr() ;然后,这个pdata就可以当成unsigned char *用了,这在网络通讯的时候很重要。如果,怕pdata破坏的话,可以TBuf8<1024> tmp_buf ;tmp_buf.Copy(buf) ;pdata = tmp_buf.Ptr() ;这样就可以保护一下buf的数据了,尤其是如果这个buf是Socket的接收的数据是接收函数自己分配的时候。strcpy原型:extern char *strcpy(char *dest,char *src);用法:#include 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。memcpy原型:extern void *memcpy(void *dest, void *src, unsigned int count);用法:#include 功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。memset原型:extern void *memset(void *buffer, int c, int count);用法:#include 功能:把buffer所指内存区域的前count个字节设置成字符c。说明:返回指向buffer的指针。1. TTime转TBuf型TBuf<32> theTime;//存储转换后的时间TTime tt; tt.HomeTime();_LIT(KTimeFormat,"%Y%M%D%1-%2-%3 %H:%T:%S");//格式为:2006-03-04 12:12:12tt.FormatL(theTime,KTimeFormat);2. TDateTime转TBuf型TTime currentTime;//声明一个TTime类型currentTime.HomeTime();//设置TTime为当前时间TDateTimetdt=currentTime.DateTime();//TTime ---> TDateTimeTBuf<32> tmp;//存储转换完的Buftmp.AppendNum(tdt.Year());//用AppendNum()方法将一个Tint加入到TBuf中。