如何将ASCII值转换为字符串

3
我卡在这段代码上了,我想把一个字符串转换成其ASCII值,减去30,然后再转换回字符串。
E.g. Enter -  hello
     Convert to - 104 101 108 108 111
     Subtract - 74 71 78 78 81
     display - JGNNQ

代码:

import javax.swing.*;
public class practice {                    
   public static void main (String[] args) {

      String enc = "";
      String encmsg = "";
      String msg = JOptionPane.showInputDialog("Enter your message");
      int len = msg.length();
      for (int i = 0; i< len ; i++) {
         char cur = msg.charAt(i);
         int val = (int) cur;
         val = val -32;
         enc = "" + val;
         encmsg = encmsg + enc;

      }

      JOptionPane.showMessageDialog(null, encmsg);


   }
}

谢谢您的提前帮助。

你当前的输出是什么? - Philipp Sander
Java 将文本存储为 UTF-16 而不是 ASCI。因此,将“char”强制转换为“int”是行不通的。 - Boris the Spider
@BoristheSpider 虽然 Java char 是 UTF-16,但是 UTF-16 映射的前 128 个字符与 ASCII 相同。 - Radiodef
感谢您的帮助,非常感激。 - user2932824
1个回答

5

有几点需要注意:

val = val -32; 改为 val = val -30; ,以获得原始问题陈述中所需的正确减法。

其次,更改

enc = "" + val;enc = (char)val;

这样你就可以将值转换为适当的字符了。 之前,你只是将它与字符串连接起来,这不会进行任何转换。 你还需要在文件顶部声明 enc 为一个 char

完整可工作的代码应该如下:

    char enc;
    String encmsg = "";
    String msg = JOptionPane.showInputDialog("Enter your message");
    int len = msg.length();
    for (int i = 0; i < len; i++) {
        char cur = msg.charAt(i);
        int val = (int) cur;
        val = val - 30;
        enc = (char) val;
        encmsg = encmsg + enc;

    }

    JOptionPane.showMessageDialog(null, encmsg);

1
由于您实际上可以在char上执行数学运算,因此大部分代码都是不必要的。 OP 可以直接执行 encmsg += (char)(msg.charAt(i) - 30); - Radiodef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接