做一个信号处理的东西。信号格式如下
信号 信号名{
0000120"string" # comment 
002D0"string" # comment 
006e0"string" # comment 
}
转换规则:去掉信号,去掉信号名,去掉注释(#到换行)," "(字符串)内字符串转换为16进制,
经过转换,信号变为"0100000000000000001076000000C6868696E00"类似的格式。
现在要实现一个功能,给出转换后的位置(比如第2位),如何查找转换前(原信号)的位置。想了一下午了没有合适的办法,谁能给个算法,多谢。

解决方案 »

  1.   

    我只是要查找位置,跟转换的关系不大阿
    拿上面的例子来说,转换是这样的
    第一步,变成
    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了吧?
      

  2.   

    你在转换的同时,将每个信号转换的长度记录下来不就可以了吗,比如:
    0000120"string"是10位,你就记录10
    002D0"string"是20位,你就记录20
    将这些位数保在一个数据结构中,当你去转换后的某一位时,直接根据前面保存的位数来计算,是处于第几个信号,不就OK啦?
      

  3.   

    0000120"string"是10位,你就记录10
    002D0"string"是20位,你就记录20 我的意思是记录string转换后的位数
      

  4.   

    自己搞定了。地址
    http://blog.csdn.net/bestseal/archive/2007/12/03/1913750.aspx