解码编码文本

时间:2018-05-10 08:25:20

标签: java

我有以下逻辑来编码文本,但是当我尝试解码它时,我没有得到预期的结果:

private static String encodeText(String input) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            int d = (int) c;
            d = d*2 + i;
            builder.append((char)d);
        }
        return builder.reverse().toString();
    }

这是我的解码逻辑,我只是​​试图颠倒编码逻辑来解码文本:

private static String decode(String input) {
        StringBuilder b = new StringBuilder();

        for (int i = input.length() - 1; i >= 0; i--) {
            char c = input.charAt(i);
            int data = (int)c;
            data = data - i;
            data = (data)/2;
            b.append((char)data);
        }
        return b.toString();
    }

如果我对文字hello进行编码,则编码值为âÛÚËÐ,当我尝试对其进行解码时,我会将其设为fdlmq

这个逻辑中的问题在哪里,你能帮助我吗?

5 个答案:

答案 0 :(得分:4)

由于在对字符进行编码后,您将反转字符串

return builder.reverse().toString();

您需要将您减去的整数更改为

data = data - (size - i - 1);

其中size是字符串的长度(input.length()

答案 1 :(得分:2)

你需要在decode开始时再次反转字符串,因为你在encodeText()中将其反转,然后在结束时再次反转,因为你从最后开始构建字符串。

private static String decode(String input) {
    StringBuilder b = new StringBuilder();
    input = new StringBuilder(input).reverse().toString();
    for (int i = input.length() - 1; i >= 0; i--) {
        char c = input.charAt(i);
        int data = (int)c;
        data = data - i;
        data = (data)/2;
        b.append((char)data);
    }
    return b.reverse().toString();
}

答案 2 :(得分:0)

所以你已经&#34;嗨&#34; 你做h * 2 + 0 = x,而i * 2 + 1 = y 现在你逆转它并且有#34; yx&#34;。

现在你解码&#34; yx&#34; 你做x-1,......

问题是,您使用+0编码x,而不是-1。不应该在这里使用我,但input.length() - 1 - i。

答案 3 :(得分:0)

这是因为我在两种方法上有所不同。 将解码逻辑更改为以下内容。

 private static String decode(String input)
  {
    StringBuilder b = new StringBuilder();

    for (int i = input.length() - 1; i >= 0; i--)
    {
      char c = input.charAt(i);
      int data = (int) c;
      data = data - (input.length()-1-i);
      data = (data) / 2;
      b.append((char) data);
    }
    return b.toString();
  }

答案 4 :(得分:0)

你的解码方法中存在错误数据= data - (input.length() - i);

试试这个

this.platform.ready().then(() => {

      this.base64ToGallery.base64ToGallery(base64Image,options)
      .then(
        res => {
          console.log('Saved image to gallery ', res);
          this.navCtrl.pop();
        },
        err => { //For ios i am getting as `plugin_not_installed`
          console.log('Error saving image to gallery ', err);
          this.navCtrl.pop()
        });

    })