如何将char*的一个buffer中的每一位都按照Unicode字符串16进制输出呢?
比如buffer为:
1234
输出为:
0x [ 31 32 33 34 ]
输入的1234为ansi,输出的为Unicode字符串。
问题点数:100、回复次数:15Top
1 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 14:40:41 得分 0
you should add a uppercase 'T' before that which you want to deal with..
for example:
T'a'Top
2 楼qhgary(Gary)回复于 2006-05-02 14:42:13 得分 0
能否把这段代码写出来看看?Top
3 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 14:55:40 得分 0
wait for a moment...........Top
4 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 14:58:16 得分 0
oh... my god ,,, i'm wrong just now
it should be L'a' (the type of wchar_t)
Top
5 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 15:01:37 得分 40
Unicode字符集用wchar_t数据类型。Unicode字符串用L前缀起头,如:
wchar_t wch = L'1'; // 2 个字节, 0x0031
wchar_t* wsz = L"Hello"; // 12 个字节, 6 个宽字符
//至于要求的详细代码; 我看 wchar_t wch = L'1'; // 2 个字节, 0x0031
就已经非常详细了 呵呵
Top
6 楼qhgary(Gary)回复于 2006-05-02 15:20:01 得分 0
不写出来的确难以发现问题...
我不是要把静态的字符串打印出来,而是动态的。
比如我给你一个buffer, char*的。
要求输出为unicode的16进制格式。
如何把L加在指针的前面???
而且如何把里面的每一位一个个取出来呢?Top
7 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 15:44:27 得分 0
1.接受所谓的动态的字符串
2.而且如何把里面的每一位一个个取出来呢? // 不用的 char * a 和 char a[] 不要看的太开了。。所以第二个问题不成立。。。。
3.如何把L加在指针的前面???// lz可以到网上搜一下Top
8 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 15:45:04 得分 0
哇,看来是班门弄斧了。。。。。。。 我才四个裤衩Top
9 楼qhgary(Gary)回复于 2006-05-02 15:48:09 得分 0
可我这个是buffer,不一定里面是字符串阿,不能用L的。
里面如果有2进制数据,碰到0就会以为结束了。Top
10 楼qhgary(Gary)回复于 2006-05-02 15:57:51 得分 0
我对unicode这块不熟悉,能否写段代码看看呢?
注意不能使用mfc,还有就是这个buffer是
2进制数据,不是字符串。Top
11 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 22:20:54 得分 0
2进制数据 ??????
字符串在内存中的表示形式也是2进制数据呀。。。。。
关键不是什么字符不字符的问题,而是在如何把L加在指针的前面???//Top
12 楼qhgary(Gary)回复于 2006-05-03 00:40:18 得分 0
那如何把L加在指针前面呢?
不能用那些A2W的宏,因为我不能用MFC.Top
13 楼Jedimaster(CRH = 耻辱号)回复于 2006-05-03 09:47:25 得分 10
http://www.boost.org/doc/html/program_options/design.html
这篇文章可能有些用Top
14 楼amziwei(潜城)回复于 2006-05-03 12:49:40 得分 40
这个......
如果楼主可以确定这个 char *pBuff 是字符串(即中间没有0x00这样的直), 则可以用
MultiByteToWideChar()这个函数来把 char 型转为 wchar_t型
注意:如果中间有0x00这样的值, 这个函数会把你的 pBuff 从这里截断.
如果这只是一个"二进制"的Buff, 要把它转为wchar_t型, 倒有一个笨方法, 如下:
分配一个两倍大的Buff, 依次将每一个16位的前8位置0 后8位置相应的 pBuff值 即可
wchar _t *MyCharToWchar(char *pBuff, int iLen)
{
wchar_t *pwBuff=(wchar_t *)malloc(iLen*2);
if(NULL == pwBuff)
return NULL;
char *pTem=(char *)pwBuff;
for(int i=0; i<iLen; i++)
{
pTem=0;
pTem++;
pTem=pBuff[i];
pTem++;
}
return pwBuff;
}Top
15 楼amziwei(潜城)回复于 2006-05-03 13:02:10 得分 10
"Unicode字符串16进制"
"输出的为Unicode字符串"&&"可我这个是buffer,不一定里面是字符串阿"
楼主你的话貌似有点矛盾, 请把话说清楚一点
既然输入的char *pBuff 不为字符串, 那么输出的unicode Buff也就不应该作字符串字符串处理
另外 16进制只是一种外在的表示方法 能用来表示 char 也能表示 unicode
"Unicode字符串16进制" ?????????????? -_-! 16位?!Top




