字符串高手请进

bestseal 2007-11-28 04:56:45
做一个信号处理的东西。信号格式如下
信号 信号名{
0000120"string" # comment
002D0"string" # comment
006e0"string" # comment
}
转换规则:去掉信号,去掉信号名,去掉注释(#到换行)," "(字符串)内字符串转换为16进制,
经过转换,信号变为"0100000000000000001076000000C6868696E00"类似的格式。
现在要实现一个功能,给出转换后的位置(比如第2位),如何查找转换前(原信号)的位置。想了一下午了没有合适的办法,谁能给个算法,多谢。
...全文
186 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
bestseal 2007-12-03
  • 打赏
  • 举报
回复
自己搞定了。地址
http://blog.csdn.net/bestseal/archive/2007/12/03/1913750.aspx
sureyor 2007-11-29
  • 打赏
  • 举报
回复
0000120"string"是10位,你就记录10
002D0"string"是20位,你就记录20

我的意思是记录string转换后的位数
bestseal 2007-11-29
  • 打赏
  • 举报
回复
我理解你的意思,这是两部分功能,不在一个程序里。
查找位置和转化已经没有关系了,程序的后期根据信号处理的结果给出数据出错的位置,只是给出你这个数据对应的原始文件,让你找出原始文件中的对应错误位置。
这种纪录在程序中是不能保存的,因为不能因为这个添加一个构造定义之类的文件。需求就是这样的,无法更改。
所以,问题比较棘手。。。
bestseal 2007-11-28
  • 打赏
  • 举报
回复
信号中的数据本身就是16进制的,所以不用转化。
yifuzhiming 2007-11-28
  • 打赏
  • 举报
回复
好有难度啊
angel_bear 2007-11-28
  • 打赏
  • 举报
回复
信号中的数字不需要当作字符考虑,装换成相应的十六进制吗
bestseal 2007-11-28
  • 打赏
  • 举报
回复
有一点有错误,转换之后的是16进制,返回的应该是字节位置,一个字节两个字符,这里应该是01,00,00这样的。
也就是说给一个字节的位置,去原文件中找相应的字节位置。空格,注释的长度都要算上。
bestseal 2007-11-28
  • 打赏
  • 举报
回复
谢谢楼上,这里不行,后来返回的位置是信号处理之后的,和这个不是一个阶段,不能保存的。
这个相当于给一个文件去原文件对比查找他本来的位置。
sureyor 2007-11-28
  • 打赏
  • 举报
回复
你在转换的同时,将每个信号转换的长度记录下来不就可以了吗,比如:
0000120"string"是10位,你就记录10
002D0"string"是20位,你就记录20
将这些位数保在一个数据结构中,当你去转换后的某一位时,直接根据前面保存的位数来计算,是处于第几个信号,不就OK啦?
seaforce 2007-11-28
  • 打赏
  • 举报
回复
关注一下吧
bestseal 2007-11-28
  • 打赏
  • 举报
回复
我只是要查找位置,跟转换的关系不大阿
拿上面的例子来说,转换是这样的
第一步,变成
0000120"string" # comment
002D0"string" # comment
006e0"string" # comment
第2步
0000120"string"002D0"string"006e0"string"
第3步0000120+string(16进制)+002D0+string(16进制)+。。。。。
最后输出的数据是这种格式的:
0100000000000000001076000000C6868696E00(假数据)
这是转换的过程,我要做的是,给出转换后的位置,查找在
信号 信号名{
0000120"string" # comment
002D0"string" # comment
006e0"string" # comment
}
这个里面的位置。
这样说,OK了吧?
bestseal 2007-11-28
  • 打赏
  • 举报
回复
只是举个例子,数据都是假的,不是一一对应的。
就是一个信号被转换成了另一种格式,转换的规则上面有。
现在要做的是,给出转换后格式的具体位置,比如10,这个位置有一个字符,0100000000000000001076000000C6868696E00,这里第10个位置是0,
要求查找这个0在未转换前的信号中的具体位置。
这样说清楚吗?
stefli 2007-11-28
  • 打赏
  • 举报
回复
你倒是转换了,但是如果你转换后,没有明显的分隔,那也根本还原不回去
因为你不知道该从那里分段,然后还原。
sureyor 2007-11-28
  • 打赏
  • 举报
回复
条件不充分,楼主应该叫信号的组成格式,规则,限制条件等,包括转换规则等描述清楚
你这好比就是在描述需求,如果需求都讲不清楚,别人又如何能理解得了?
  • 打赏
  • 举报
回复
你要实现的功能,也没看懂!

你不能举个详细点的例子吗?
  • 打赏
  • 举报
回复
没看懂!

这么长一串0100000000000000001076000000C6868696E00是哪来的?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧