转: symbian c++ 各种数据类型转换


K歌之王

在symbian下虽然使用基本的C++数据类型在很多时候也可编译通过,但可能导致程序不可靠,要尽量使用symbian新定义的数据类型。

 

主要的基本数据类型有

整型:TInt--(C++)int,TUint--(C++)unsigned int, symbian里克认为控制整型数长度,在TInt后加数字(8,16,32或62)即可

字符型:用的不多,因为symbian有描述符,并封装了较完备的方法来处理字符串。

字符型:ETrue(真)和EFalse(假)

浮点型:TReal32,TReal64(symbian通常避免使用浮点数而采用整型算法,以精度换速度)

空类型:TAny,相当于C++中的void

枚举型:算整型的分支,enum

 

描述符: 用于字符串处理的一系列类,TBuf是TDes的子类,TbufC 相当于*char。

 

常见类型转换实例:

 

1. TDes转TInt

TInt  Utils::TDes2TIntL(TDesC &aDesC)

   TInt rstInt;
   TLex lexRec(aDesC);
   if(lexRec.Val(rstInt)!=KErrNone)
       User:eave(0);
   return rstInt;
}

 

2. 将symbian串转换成char串

      char* p = NULL;
      TBuf8<20> buf( _L( "aaaaa" ) );
      p = (char *)buf.Ptr();

 

3. 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的接收的数据是接收函数自己分配的时候。

 

4. 数字转换成串

     TBuf16<20> buf;
     TInt iNum = 20;
     buf.Format( _L( "%d" ) , iNum    );

 

5. 串转换成数字

  TBuf16<20> buf(_L( "123" ) );
      TLex lex( buf );
      TInt iNum;
      lex.Val( iNum );

你可能感兴趣的:(C++,算法,socket,null,Symbian,通讯)