首页 > 解决方案 > 解码编码文本

问题描述

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

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

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

标签: java

解决方案


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

return builder.reverse().toString();

你需要改变你减去的整数

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

String ( )size的长度在哪里input.length()


推荐阅读