开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 无声的雨
收起左侧

[已解决] 文本分割的问题(有些难度),大牛请进

 关闭 [复制链接]
发表于 2011-10-16 14:57:12 | 显示全部楼层   江苏省南通市
本帖最后由 pppploi8 于 2011-10-16 15:04 编辑
无声的雨 发表于 2011-10-16 14:46
如果把其中的空格去掉怎么办呢?我吧空格去掉后就不对了
去掉空格后的样子
F4447C003F010106D3EAB7D7B7 ...

这个必须得考虑到你这段数据分割到底怎么分,有空格还是没空格。虽然说可以写个循环去掉空格后再分割,但个人感觉太烦了。至于你补充了以后就很明确了,位数变的可以确定,固定值正好在变化位数的前面,基本上自己数一下取几位是什么就可以写出来了

好吧,我没看清....如果02 08代表第二位角色,08位长度就很麻烦了。毕竟要保证02的前面不出现02...你去多截取几个数据包看看第一段的最后一个地方的长度和第二段02中间长度固定不,否则..额....很难
回复

使用道具 举报

结帖率:100% (5/5)
发表于 2011-10-16 15:07:13 | 显示全部楼层   河北省石家庄市
学学正则吧
回复

使用道具 举报

结帖率:81% (17/21)
 楼主| 发表于 2011-10-16 15:14:19 | 显示全部楼层   河南省郑州市
本帖最后由 无声的雨 于 2011-10-16 15:16 编辑
pppploi8 发表于 2011-10-16 14:57
这个必须得考虑到你这段数据分割到底怎么分,有空格还是没空格。虽然说可以写个循环去掉空格后再分割,但 ...


第一段的最后一个地方和第二段到02中间都是27位,比较固定
0003000200AB0E801AD4C79A3B01039656E552902B2B5A835EF362
0003000200C81A831A5CA4841A0104000045520000000000002563

加大显示一下完整的
F4 44 7C 00 3F 01 01 06 D3 EA B7 D7 B7 D7 90 04 35 02 00 00 35 02 00 00 52 05 00 00 C4 02 00 00 44 BF 6B 1B EB 0F 03 00 03 00 02 00 AB 0E 80 1A D4 C7 9A 3B 01 03 96 56 E5 52 90 2B 2B 5A 83 5E F3 62 02 08 C0 CF BC C5 D5 E6 CB A7 04 04 B8 00 00 00 81 00 00 00 70 00 00 00 70 00 00 00 B1 00 00 00 01 00 00 00 03 00 02 00 45 6E 81 1A D4 C7 9A 3B 00 00 00 00 14 52 00 00 00 00 CC 5D 00 00

还有一个就是02 08这两个代表,02为第2角色,08为后面的位数(也就是用户名的长度)
回复

使用道具 举报

结帖率:81% (17/21)
 楼主| 发表于 2011-10-16 15:22:13 | 显示全部楼层   河南省郑州市
本帖最后由 无声的雨 于 2011-10-16 15:22 编辑

对了,补充一下,我现在发的那些都是有空格的方便看,但是从服务器上获取到的没有空格,所以不需要把空格计算在内,请按照这样的格式来获取吧

F4447C003F010106D3EAB7D7B7D79004350200003502000052050000C402000044BF6B1BEB0F030003000200AB0E801AD4C79A3B01039656E552902B2B5A835EF3620208C0CFBCC5D5E6CBA70404B8000000810000007000000070000000B10000000100000003000200456E811AD4C79A3B00000000145200000000CC5D0000
回复

使用道具 举报

结帖率:50% (4/8)
发表于 2011-10-16 16:48:06 | 显示全部楼层   法国
本帖最后由 爱家的小懒虫 于 2011-10-16 16:49 编辑

1.rar (617.66 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2011-10-16 17:21:40 | 显示全部楼层   江苏省南通市
爱家的小懒虫 发表于 2011-10-16 16:48
用了精易2.57模块. 16转10用  你自己有的把.

帮你弄了这么久了 希望能采纳哦~

{:soso_e181:}都一样啊...只是我和你用的模块不同
回复

使用道具 举报

结帖率:81% (17/21)
 楼主| 发表于 2011-10-16 17:59:04 | 显示全部楼层   河南省郑州市
本帖最后由 无声的雨 于 2011-10-16 18:13 编辑
pppploi8 发表于 2011-10-16 16:42
做好了,很简单
顺带一说,因为不想写 十六到十 ,所以偷了下懒,直接用了模块,和源码放在一起
超级(防 ...


[e].版本 2
.支持库 spec

待处理文本 = 字节集_到十六进制 (新字节集)

' 首先把待处理文本的空格全部去掉
.判断循环首 (寻找文本 (待处理文本, “ ”, , 假) ≠ -1)  ' 寻找空格,找不到就跳出循环
    Q1 = 寻找文本 (待处理文本, “ ”, , 假)
    待处理文本 = 文本替换 (待处理文本, Q1, 1, “”)
.判断循环尾 ()
' 接下来分割。首先是第一段第一个位置
Q1 = 寻找文本 (待处理文本, “003F0101”, , 假)  ' 固定值
' 现在要取这段后面的数字,然后转换进制
Q1 = Q1 + 取文本长度 (“003F0101”)
第一段长度 = 取文本中间 (待处理文本, Q1, 2)
' 不想写十六到十,直接用模块转换算了
Q1 = Q1 + 2
长度 = 十六到十 (第一段长度, )
p角色名1 = 到文本 (十六进制文本到字节集 (取文本中间 (待处理文本, Q1, 长度 × 2)))  ' 角色1的角色名称
Q1 = Q1 + 取文本长度 (取文本中间 (待处理文本, Q1 + 2, 长度 × 2))
角色1等级 = 到文本 (到十进制 (取文本中间 (待处理文本, Q1, 2)))  ' 角色1的等级
Q1 = Q1 + 4  ' 因为04位数不变,把Q1位置移动到90 04的后面
pHP上限1 = 到十进制 (取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1的HP上限
Q1 = Q1 + 8  ' 理由同上
pHP当前1 = 到十进制 (取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1当前的HP
Q1 = Q1 + 8  ' 理由同上
pSP上限1 = 到十进制 (取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1的SP上限
Q1 = Q1 + 8  ' 理由同上
pSP当前1 = 到十进制 (取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1的SP上限
Q1 = Q1 + 16  ' 理由同上
飘币 = 到十进制 (取文本中间 (待处理文本, Q1 + 4, 2) + 取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1的飘流币

编辑框1.加入文本 (#换行符)
' 第一段读取完成
' 第二段的分割线=========
Q1 = Q1 + 6  ' 先把位置移动到末尾
Q1 = Q1 + 27 × 2  ' 已知第一段到第二段位置固定27位
编辑框1.加入文本 (“第二段,角色数值02不取,从08(位数)开始”)
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 2  ' 跳过02
长度 = 十六到十 (取文本中间 (待处理文本, Q1, 2))
Q1 = Q1 + 2
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 长度 × 2))
调试输出 (取文本中间 (待处理文本, Q1, 长度 × 2))

编辑框1.加入文本 (#换行符)
Q1 = Q1 + 长度 × 2
' 然后取04两次,按长度取
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 2))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 2
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 2))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 2
' 04后面的四位数字
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 4))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 8
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 4))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 8
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 4))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 8
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 4))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 8 × 2
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 6))
编辑框1.加入文本 (#换行符)
' 结束了!如果不是你第二段要比第一段多取一个位置的话不用这么麻烦,而且还能用循环自动读取有几个角色(01 02 03数值判断)
[/e]

我写成这样后第二段的获取有问题了,是不是位数出错了呢?
回复

使用道具 举报

发表于 2011-10-16 18:12:47 | 显示全部楼层   江苏省南通市
无声的雨 发表于 2011-10-16 17:59
F4 44 7C 00 3F 01 01 08 DD SS D3 EA B7 D7 B7 D7 90 04 35 02 00 00 35 02 00 00 52 05 00 00 C4 02 00 ...


代码绝对没有改过,不过我试了很正常。而且源码除了第一次的固定值定位以外就没有再次定为过,只是根据长度取文本而已,绝对不可能出现不自动换行,
回复

使用道具 举报

结帖率:81% (17/21)
 楼主| 发表于 2011-10-16 18:14:38 | 显示全部楼层   河南省郑州市
本帖最后由 无声的雨 于 2011-10-16 18:14 编辑
pppploi8 发表于 2011-10-16 18:12
代码绝对没有改过,不过我试了很正常。而且源码除了第一次的固定值定位以外就没有再次定为过,只是根据 ...

您帮我看下这个吧,修改成这样后,第二段的获取就有问题了,会不会是位数的原因
.版本 2
.支持库 spec

待处理文本 = 字节集_到十六进制 (新字节集)

' 首先把待处理文本的空格全部去掉
.判断循环首 (寻找文本 (待处理文本, “ ”, , 假) ≠ -1)  ' 寻找空格,找不到就跳出循环
    Q1 = 寻找文本 (待处理文本, “ ”, , 假)
    待处理文本 = 文本替换 (待处理文本, Q1, 1, “”)
.判断循环尾 ()
' 接下来分割。首先是第一段第一个位置
Q1 = 寻找文本 (待处理文本, “003F0101”, , 假)  ' 固定值
' 现在要取这段后面的数字,然后转换进制
Q1 = Q1 + 取文本长度 (“003F0101”)
第一段长度 = 取文本中间 (待处理文本, Q1, 2)
' 不想写十六到十,直接用模块转换算了
Q1 = Q1 + 2
长度 = 十六到十 (第一段长度, )
p角色名1 = 到文本 (十六进制文本到字节集 (取文本中间 (待处理文本, Q1, 长度 × 2)))  ' 角色1的角色名称
Q1 = Q1 + 取文本长度 (取文本中间 (待处理文本, Q1 + 2, 长度 × 2))
角色1等级 = 到文本 (到十进制 (取文本中间 (待处理文本, Q1, 2)))  ' 角色1的等级
Q1 = Q1 + 4  ' 因为04位数不变,把Q1位置移动到90 04的后面
pHP上限1 = 到十进制 (取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1的HP上限
Q1 = Q1 + 8  ' 理由同上
pHP当前1 = 到十进制 (取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1当前的HP
Q1 = Q1 + 8  ' 理由同上
pSP上限1 = 到十进制 (取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1的SP上限
Q1 = Q1 + 8  ' 理由同上
pSP当前1 = 到十进制 (取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1的SP上限
Q1 = Q1 + 16  ' 理由同上
飘币 = 到十进制 (取文本中间 (待处理文本, Q1 + 4, 2) + 取文本中间 (待处理文本, Q1 + 2, 2) + 取文本中间 (待处理文本, Q1, 2))  ' 角色1的飘流币

编辑框1.加入文本 (#换行符)
' 第一段读取完成
' 第二段的分割线=========
Q1 = Q1 + 6  ' 先把位置移动到末尾
Q1 = Q1 + 27 × 2  ' 已知第一段到第二段位置固定27位
编辑框1.加入文本 (“第二段,角色数值02不取,从08(位数)开始”)
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 2  ' 跳过02
长度 = 十六到十 (取文本中间 (待处理文本, Q1, 2))
Q1 = Q1 + 2
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 长度 × 2))
调试输出 (取文本中间 (待处理文本, Q1, 长度 × 2))

编辑框1.加入文本 (#换行符)
Q1 = Q1 + 长度 × 2
' 然后取04两次,按长度取
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 2))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 2
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 2))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 2
' 04后面的四位数字
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 4))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 8
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 4))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 8
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 4))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 8
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 4))
编辑框1.加入文本 (#换行符)
Q1 = Q1 + 8 × 2
编辑框1.加入文本 (取文本中间 (待处理文本, Q1, 6))
编辑框1.加入文本 (#换行符)
' 结束了!如果不是你第二段要比第一段多取一个位置的话不用这么麻烦,而且还能用循环自动读取有几个角色(01 02 03数值判断)




回复

使用道具 举报

结帖率:50% (4/8)
发表于 2011-10-16 18:20:52 | 显示全部楼层   法国
本帖最后由 爱家的小懒虫 于 2011-10-16 18:21 编辑
pppploi8 发表于 2011-10-16 17:21
都一样啊...只是我和你用的模块不同


我从开始 就给他做好了.他一直在加要求. 就是不肯定给分.诶.

现在又有新的要求来了.

思路也用了 我一开始给的思路!

回复

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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