首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 帮忙看看这个指针的转化是什么意思? [已结贴,结贴人:ablenavy]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ablenavy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-21 10:08:12 楼主
    const char * p = "中";
    unsigned short s;
    s = * (unsigned short *) p;

    得到的s=53426
    这是什么意思呢?望高人指点,谢谢!
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:32:591楼 得分:0
    53426 是中的内码
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:33:262楼 得分:0
    转换为16进制就是D0D6
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:39:293楼 得分:80
    http://www.hljrstbb.gov.cn/search.htm

    这个是查看汉字的区位码:
    中的区位码是5448

    转换为国标码就是:(区位码(十进制)的两个字节分别转换为十六进制后加20H得到对应的国标码;)
    36+20 = 56
    30+20 = 50

    所以中的国标码是:5650


    内码是汉字交换码(国标码)两个字节的最高位分别加1,即汉字交换码(国标码)的两个字节分别加80H得到对应的内码;

    56+80 = D6
    50+80 = D0

    所以中的内码是d6d0


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:41:364楼 得分:0
    呵呵,反了,是d0d6
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ablenavy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:44:465楼 得分:0
    对不起,更正一下,刚才写错了,应该是s=53462
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:50:336楼 得分:0
    引用 5 楼 ablenavy 的回复:
    对不起,更正一下,刚才写错了,应该是s=53462


    就是d0d6
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • e_sharp
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:59:077楼 得分:0
    lz都说了,s就是"中"内码

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zjw6861982
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 11:01:168楼 得分:5

    这个是查看汉字的区位码:
    中的区位码是5448

    转换为国标码就是:(区位码(十进制)的两个字节分别转换为十六进制后加20H得到对应的国标码;)
    36+20 = 56
    30+20 = 50

    所以中的国标码是:5650


    内码是汉字交换码(国标码)两个字节的最高位分别加1,即汉字交换码(国标码)的两个字节分别加80H得到对应的内码;

    56+80 = D6
    50+80 = D0

    所以中的内码是d6d0

    同意啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lily604
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 11:13:169楼 得分:0
    引用 7 楼 e_sharp 的回复:
    lz都说了,s就是"中"内码
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yeliguo12345
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 11:30:1110楼 得分:0
    就是,中的内码
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yeliguo12345
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 11:33:0311楼 得分:5
    先用p指向‘中’p是const char型的
    然后把p转换为unsigned short *型后,再间接引用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • brucling
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 16:24:1912楼 得分:0
    引用 1 楼 hqin6 的回复:
    53426 是中的内码

    中的unicode码
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qqwx_1986
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 17:25:5913楼 得分:0
    好复杂
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • synix521
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 17:30:3114楼 得分:0
    学习.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kings_zqz
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 19:44:0315楼 得分:0
    内码?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CSYNYK
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 20:41:1416楼 得分:5
    C/C++ code
    const char * p = ""; //中文字符都是占两个字节的双字节字符 unsigned short s; //定义一个short型数,在32位系统中short的宽度正好是两个字节 s = * (unsigned short *) p; //类型转换,目的是将p指向的两个字节的内容(即内码),按照short数据的格式读出来赋给s。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wanlifeifei
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 09:23:1017楼 得分:0
    学习~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ztz0223
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 09:27:5018楼 得分:0
    16楼正解


    const char * p = "中";    //中文字符都是占两个字节的双字节字符
    unsigned short s;          //定义一个short型数,在32位系统中short的宽度正好是两个字节
    s = * (unsigned short *) p;
    //类型转换,目的是将p指向的两个字节的内容(即内码),按照short数据的格式读出来赋给s。


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xianyuxiaoqiang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 14:22:4319楼 得分:5
    汉字“中”在内存中以2字节2进制数
    1101 0000 1101 0110 即十进制的53462存储
    它实际上是映射到汉字点阵图库中的“中”字图形。
    具体怎么映射的可以去查相关资料。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xqls_xqls
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 14:27:5420楼 得分:0
    中的内码。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ablenavy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 15:39:4221楼 得分:0
    大家讨论得很热烈,多谢各位大虾们的积极参与,现在终于明白是怎么一回事了,再次感谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chengyukyo1
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 15:53:5722楼 得分:0
    认真学习 了解很多了  我还是菜鸟
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wudeshou82666
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 16:28:3023楼 得分:0
    来迟一步
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved