2933|9

85

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

GSM to Unicode问题,请高手进来帮我看一下代码 [复制链接]

转换后只有第一个是正确的.

Bool gsm_to_unicode(const LPCSTR sIn, const UINT cbIn, const LPWSTR wsOut, const UINT cchOut, UINT &rcchUsed)
{
    LPCSTR pchIn, pchInEnd;
    LPWSTR pwchOut, pwchOutEnd;
    BYTE bValue, bNextValue;
    char ch7bit = 0x00;
    char chAddBit = 0x00;
    unsigned char byte_n;
    UINT nBits = 0;
    UINT nReserveBits = 0;

    rcchUsed = 0;
    pchInEnd = sIn + cbIn;
    pwchOutEnd = wsOut + cchOut;
    pchIn = sIn;
    pwchOut = wsOut;

    while(pchIn < pchInEnd && pwchOut < pwchOutEnd)
    {
        bValue = (BYTE)*pchIn++;
        bNextValue = (BYTE)*pchIn;
        if(!bNextValue)
            bNextValue = 0;     //到最后一位的时候.

        ch7Bit = bValue & 0x7f;   //干掉第8位.
        nReserveBits += ldexp(1.0, nBits);
        switch(nReserveBits)
        {
            case 1:
                byte_n = 0x1;
                break;
            case 3:
                byte_n = 0x3;
                break;
            ...
            case 127:
                byte_n = 0x7f;
                break;
        }
        chAddBit = bNextValue & byte_n;              //保留后几位.
        chAddBit <<= (UIN)fabs(7.0 - nBits);         //将后几位往前移.
        ch7Bits |= chAddBits;                       

        *pwchOut++ = g_rgwchGsmToUnicode[ch7Bits];   //取unicode值.
        nBits = (nBits + 1) % 7;
        if(!nBits && pwchOut < pwchOutEnd)
            nReserveBits = 0;
    }
    rcchUsed = pwchOut - wsOut;

    return TRUE;
}

请高手帮我看一下,为什么转换不了.

最新回复

第一个不管怎么搞,只要把第8位删除就行了,删除后还是和以前一样,所以是正确的.  详情 回复 发表于 2008-11-19 15:28
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你的什么平台?可以单步调试吗?追踪一下,看内存了!
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
可能是取字节取错误了,本来字符串没有结束,特别是对英文的处理。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

4
 
[抗议]对硬件/嵌入开发的某些版主武断,简单,粗暴的执法方式表示严重的抗议!  
http://topic.eeworld.net/u/20081119/11/bda8bc5d-98d0-45ee-a1c1-86209d7f121d.html

各位再看看我刚才那个在硬件/嵌入开发版贴子已经被版主删除了,他是担心什么,还没有一会就直接删除,而且也没个通知说明一下,各位兄弟这里的版主是正直,但是做事的方式有欠妥,直得商榷,我不是说打广告对,我是说他直接封我ID,之前不说一下,之后不通知,感觉很郁闷!如果他提醒一下我一定停止发,他不说我以为这个可以发了,因为之前我是有准备哪个版主提醒一下我很快就不发,所以我才对他不提醒很气愤!


对版主处理问题武断,简单,粗暴的方式表示严重的抗议! 你看你只有也只能删除一下留言,封封几个不听话的ID,还能做点别的不?

此版主跟城管有得一比!

另外各位看看下面这两个帖子!

http://topic.eeworld.net/u/20081118/15/5ade4cdf-3a30-4481-be9d-1b97b88cde48.html

http://topic.eeworld.net/u/20081118/08/cf7d0af3-35cc-4fb7-9dc2-4567041b89e5.html?seed=1367941736


我开一贴他就删除一贴,他们怕什么,我只有以下两个要求:
第一,你把我的那个ID,解封了,
第二,我可以开贴道歉,以后不发广告贴,但是是哪位版主删除的,站出来说一下,然后就此武断,简单,粗暴的方式执法的行为进行道歉!

另外我那个ID在此已经四年了,从来没有任何不良记录,这次直接封,我表示严重的抗议,希望大版版主能就此事作个说明!

 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
你还来啊,等下别人可不管你有什么遭遇啊。
你方式明显不对。


——哎,怎么说你呢
 
 
 

回复

93

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 gooogleman 的回复:
你还来啊,等下别人可不管你有什么遭遇啊。
你方式明显不对。


——哎,怎么说你呢


不明白你说的第一句话.
我的方式不对? 请你指出.
我刚才想了一下,好象是从第2位取了值后,没有往后移的原因吧.
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

7
 
[quote]引用 1 楼 xqhrs232 的回复:
你的什么平台?可以单步调试吗?追踪一下,看内存了!
[/Quote

xqhrs232兄弟,我用的是VS2005,但保存的是GSM码,去内存看也显示的是乱码.
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
看看代码了
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

9
 
明白了,我搞反方向了.
全乱套了.
 
 
 

回复

85

帖子

1

TA的资源

一粒金砂(初级)

10
 
第一个不管怎么搞,只要把第8位删除就行了,删除后还是和以前一样,所以是正确的.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表