从这个字符串中获取字母位置的数学公式是什么?

时间:2011-12-07 05:00:52

标签: encryption

enter image description here

上面的完整字符串是两个不同字符串的组合形式,名为string-1和string-2。两个字符串的长度相等,均为32个字符。还有另外两个参数区间大小。 string-1被分成长度= interval 的片段,string-2被分成长度= size 的片段以形成完整的字符串。将字符串-2的所有部分放入完整字符串后,将字符串-1填充到整个字符串中。

size 变量的可能值为:2,4,8,16 区间变量的可能值为:从1到大小变量值的任何值

我的要求是写一个数学方程式获取索引(以完整字符串形式)第n个字符串-1的字符串,而不将整个字符串分成2个原始字符串。

例如 在上面的完整字符串中,如果我想获取字符串-1的第5个字符,它将是'2',其完整字符串中的索引是 12 。 第6个字符'1'的索引 15

P.S。字符的索引从0到索引计算,第n个字符从1到 n 计算

2 个答案:

答案 0 :(得分:0)

我从其他地方得到了答案并在此处分享。

PHP代码:

min(32,(floor($n/$interval)*$size))+$n

答案 1 :(得分:0)

index = group_size*group_number + group_offset
  where
    group_size   = size + interval
    group_number = floor((character - 1)/interval)
    group_offset = (character - 1) % interval

或者

index = (size + interval)*floor((character - 1)/interval) + (character - 1) % interval    

举例:

character = 5, interval = 1, size = 2
index = (2 + 1)*floor((5 - 1)/1) + (5 - 1) % 1
      = 3*floor(4) + 0
      = 12


character = 6, interval = 1, size = 2
index = (2 + 1)*floor((6 - 1)/1) + (6 - 1) % 1
      = 3*floor(5) + 0
      = 15