当前位置:编程学习 > wap >>

关于字符串转换

请问,如何在char*和TBuf之间进行转换啊?谢谢!! --------------------编程问答-------------------- kcomex 2004-09-25 12:36 

--------------------------------------------------------------------------------

Code:

--------------------------------------------------------------------------------
#define LENGTH_IN_UCHAR 100
#define LENGTH_IN_TBUF 50
unsigned char[LENGTH_IN_UCHAR] src;
/*
something you fill src
*/
TBuf<LENGTH_IN_TBUF> dest;
for (TInt i=0; i<dest.Length(); i++)
    dest.Append(src[i*2]*0x100+src[i*2+1]);
--------------------------------------------------------------------------------
 

说明一点,你的unsigned char[]中保存的内容必须是Unicode,如果是其他编码必须先转化,否则TBuf显示的内容不对;
另外我添加的顺序是正序,如果是从文件中读取事先逆序保存的内容,还要把那两个src[]顺序调换一下;

Regards
kcome

我是转贴的,希望对你有帮助 --------------------编程问答-------------------- http://www.sf.org.cn/Article/lumen/200603/17358.html   



我们知道C语言中又很方便的函数,很多种方法可以把字符串变成数字,
比如
char * p = "100" ; 
int       a;  
a = atoi(p) ;  // 此时a的值就是100了。
或者用这种办法也可以,就是慢点:
sscanf(p, "%d", &a) ; 这样也可以达到同样的效果。

但是symbian开发环境中遇到这种情况,我们该怎么做呢?
我们可以考虑采用TLex类,来实现同样的功能。
TBufC  buffer = _L("124") ; 
TLex8 lex;
TInt value;

lex.Assign((const unsigned char*) buffer.Ptr());
if(lex.Val(value) == KErrNone) {
    // 证明转换没有问题,你可以在value中使用buffer里面的字符串格式的数据了。
}
--------------------编程问答-------------------- char aa[] = "abc123";

TBuf8<0x10> aa8;
aa8.Copy((TUint8*) aa);

TBuf<0x10> aa16;
aa16.Copy(aa8);
补充:移动开发 ,  Symbian
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,