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
这个逻辑的问题在哪里,你能帮帮我吗?
解决方案
由于在对字符进行编码后,您将字符串反转
return builder.reverse().toString();
你需要改变你减去的整数
data = data - (size - i - 1);
String ( )size
的长度在哪里input.length()
推荐阅读
- javascript - 如果单击它会刷新或重新加载,如何制作标签?
- python - 我想在运行时在 python 中更改一些涉及逗号分隔的打印格式
- android - 将系统服务从 AOSP 构建树移动到可安装的 APK?
- vb.net - 使用 Httpwebrequest vb.net 登录网站
- python - 我需要什么降价模板,以便在使用 nbconvert 导出时,Jupyter 笔记本中的输出单元格与输入单元格看起来不同
- postgresql - 如何在时间戳后附加间隔偏移量
- flutter - 显示键盘时如何隐藏cupertinoTabBar?或者如何让键盘覆盖酒吧?还是将标签栏始终保持在底部?
- javascript - 为什么即使填充设置为'rgba(0,0,0,0)',最近绘制的弧也有黑色填充?
- python - 用与其他列相同的行数填充列的更好方法
- vue.js - Vue.js push.route 不改变 App 中的组件