打印

如何把单字节字符转换为双字节字符?

[复制链接]
7850|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
efen|  楼主 | 2014-5-29 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2014-5-29 15:05 | 只看该作者
char cs[] = L"abc";

这样不行吗

使用特权

评论回复
板凳
ayb_ice| | 2014-5-29 15:10 | 只看该作者
本帖最后由 ayb_ice 于 2014-5-29 15:15 编辑

typedef union{
        char* p;

        unsigned short* p2;

}t_L_ABC;


//______________________________________________________________
// main
//______________________________________________________________
//
// 主函数
//
int main(void)
{
        t_L_ABC cs = {.p2 = L"abc"};
        
        char * pc;

        pc = cs.p;
}


C99可以使用

使用特权

评论回复
地板
efen|  楼主 | 2014-5-29 15:26 | 只看该作者
本帖最后由 efen 于 2014-5-29 15:35 编辑
ayb_ice 发表于 2014-5-29 15:05
char cs[] = L"abc";

这样不行吗

是这样的,U16 cs[]=L"abc",单字符内容是可变的,然后要根据内容比较作查询

现在问题大概是这样,
宏定义了 单字节字符串 "FILE01"   "FIFE02"
   U8 filename[20]= "C:\\";
   strcat(filename,"FILE01");
  最后要把filename变双字符传给应用函数

使用特权

评论回复
5
ayb_ice| | 2014-5-29 15:36 | 只看该作者
efen 发表于 2014-5-29 15:26
是这样的,U16 cs[]=L"abc",单字符内容是可变的,然后要根据内容比较作查询

现在问题大概是这样,

我这就不可变吗

使用特权

评论回复
6
huangxz| | 2014-5-29 16:38 | 只看该作者
efen 发表于 2014-5-29 15:26
是这样的,U16 cs[]=L"abc",单字符内容是可变的,然后要根据内容比较作查询

现在问题大概是这样,

你是说的unicode吗

使用特权

评论回复
7
efen|  楼主 | 2014-5-29 16:48 | 只看该作者
huangxz 发表于 2014-5-29 16:38
你是说的unicode吗

我也不了解,我对比了L"abc"转换后的16位字符,发现只要在8位字符基础上插入高位0x00就行了。那就好办了

使用特权

评论回复
8
yewuyi| | 2014-5-29 16:56 | 只看该作者
搞成联合体是王道。。。

使用特权

评论回复
9
电子云图| | 2014-5-29 18:33 | 只看该作者
字符串的是以'\0'结尾的,把前面两个字符memcpy过去,在后面加'\0'就OK了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:得之坦然,失之淡然,争其必然,顺其自然。

51

主题

616

帖子

1

粉丝