关于字符串转换
请问,如何在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