爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1307|回复: 19
收起左侧

[ELF文件] 对gb2ws/ws2gb(apicode)做了一下修改,大家看看有没有必要

[复制链接]
发表于 2008-5-17 19:50:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
首先要说的是,along做的这种转换方式效率是非常高的。

ws2gb转换的时候,只支持到0x4E00到0x9FA5之间UNICODE中文字符转换。
虽然余下的大部分字符我们都用不上,不过一些常见的双字节的标点符号我们用到的还是比较多的。
于是我直接在程序中添加了这几个标点符号的转换。主要是一下几个标点符号
  1. — ‘ “ ” ℃ '、 。 ! ( ) , : ; ? ~ ¥
复制代码
另外直接把码表的地址,gb2ws,ws2gb的代码分段写出来了,方便确定程序入口,以及其他程序对码表的调用。

源码及VKP(码表未作任何修改):
GB2WS.7z (44.03 KB, 下载次数: 25)
发表于 2008-5-17 19:58:28 | 显示全部楼层
我第一个来。。。虽然对技术不懂
哈哈。
最近忙论文,头都大了。
同学机器,想刷刷。。。
就下载这个好了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 20:10:37 | 显示全部楼层

不知楼上说这话想做什么...开这个帖子是希望探讨一下的...悄悄提示,切勿盲目刷机!

从这个版本代码获得码表地址:
  1. #pragma swi_number=0x8242
  2. __swi __arm void *gb2ws_adr();

  3. unsigned short *getCodemapAddr(void)
  4. {
  5.         unsigned int *func_addr=(unsigned int *)((char *)gb2ws_adr()-0x21);
  6.         return ((unsigned short *)(*func_addr));
  7. }
复制代码
从以前版本代码获得码表地址:
  1. #pragma swi_number=0x8242
  2. __swi __arm void *gb2ws_adr();

  3. unsigned short *getCodemapAddr(void)
  4. {
  5.         unsigned int *func_addr=(unsigned int *)((char *)gb2ws_adr()+0x4B);
  6.         return ((unsigned short *)((*func_addr)+0x80FE));
  7. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2008-5-17 20:14:53 | 显示全部楼层
精简掉一些,会不会对兼容不太好:/jy
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 20:16:17 | 显示全部楼层

回复 4# regspy 的帖子

不会有兼容性问题,都是有容错处理的,不妨看看源码

                               
登录/注册后可看大图
回复 支持 反对

使用道具 举报

发表于 2008-5-17 21:26:11 | 显示全部楼层
那不如做个完整的GB2312吧,一次到位,反正空间足够

或者搞个gbk,支持繁体好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 21:30:59 | 显示全部楼层

回复 6# jpg001 的帖子

那个太大,用处也不大,另外还需要一个连续的转换码表看看先

[ 本帖最后由 BingK 于 2008-5-17 21:34 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-5-17 21:45:28 | 显示全部楼层
如果用做sietextview的码表就会需要了。
gb2312本身不大,才6k多汉字,就算做成码表也才几十k大小,占不了多少空间。GBK就大了点。我这里有GBK<->UCS的码表,总共有700多K
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 22:13:37 | 显示全部楼层

回复 8# jpg001 的帖子

sietxtview的码表我看了一下,uc2gb.map,是以一个双字节字符,再一个字节表示距离,要找到最终结果,需要对前面的距离进行检查,中间是有跳过一些字符的。。。如果考虑效率的话,是有些逊色的

GBK<->UCS转换码表发上看看

[ 本帖最后由 BingK 于 2008-5-17 22:15 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-5-17 23:23:48 | 显示全部楼层
给你个汉字处理的源码瞧瞧,码表也在里面

中文内码转换源码.rar

104.15 KB, 下载次数: 7

回复 支持 反对

使用道具 举报

发表于 2008-5-18 08:48:46 | 显示全部楼层
我觉得GBK太大了,手机空白空间应该不够.GB2312还是有必要的.现在有些常见的字确实显示不了.
回复 支持 反对

使用道具 举报

发表于 2008-5-18 10:04:59 | 显示全部楼层
uc2map
用了索引
C的效率上没有问题。
unicode的分布 还有些日文平假片假名,全角英文,数字,标点符号,生僻汉字,并不在这个区,精简了不太好。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-18 10:06:33 | 显示全部楼层

回复 11# crack4000 的帖子

显示是gb2ws的任务,不过gb2ws的码表已经很全了,没有问题的,不能显示是西机系统本身的问题。
我说的主要是ws2gb,这个东西,其实余下的那些字符,在西机上是没法输入的(除非改过标点符号的),只有在编辑本身带有这些字符的文件,保存这个文件时才会用到,能实现这个的也就siertxtview,cfgedit了
回复 支持 反对

使用道具 举报

发表于 2008-5-18 11:46:08 | 显示全部楼层
str_2ws也兼容进去。。。。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-18 11:51:09 | 显示全部楼层

回复 14# zhangxxx 的帖子

其实转换到ws都没什么问题的啊
回复 支持 反对

使用道具 举报

发表于 2008-5-18 12:43:59 | 显示全部楼层
空白地址肯定是够用的
经常做个图片补丁都上500K了  效率速度确实很重要
回复 支持 反对

使用道具 举报

发表于 2008-5-18 16:13:23 | 显示全部楼层
我靠,我的浏览器上论坛没有旁边的滚动条了,鼠标中建滚动也不管用。。页面拉不下来,晕
回复 支持 反对

使用道具 举报

发表于 2008-5-18 16:48:36 | 显示全部楼层
手机本身支持繁体字的啊
回复 支持 反对

使用道具 举报

发表于 2008-5-18 23:24:46 | 显示全部楼层
完全不懂!
纯支持,
我的鼠标滚轮有问题,网页乱颤!
回复 支持 反对

使用道具 举报

发表于 2008-5-19 07:22:37 | 显示全部楼层
没看仔细,原来是ws2gb函数,这用在编辑保存上,支持!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-6-3 09:04

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表