Java 如何将字符串更改为ascii值并返回为字符串?

Java 如何将字符串更改为ascii值并返回为字符串?,java,character-encoding,Java,Character Encoding,我正在尝试制作一个简单的加密程序,将字符串转换为等效的ASCII值,然后再次将其解密为字符串或字符 import java.io.*; import javax.swing.*; public class SimpleEncryption { public static void main (String [] args) throws Exception { BufferedReader inKb = new BufferedReader (new InputStrea

我正在尝试制作一个简单的加密程序,将字符串转换为等效的ASCII值,然后再次将其解密为字符串或字符

import java.io.*; 
import javax.swing.*;

public class SimpleEncryption {
   public static void main (String [] args) throws Exception
  {
     BufferedReader inKb = new BufferedReader (new InputStreamReader (System.in));

     for(int i=0; i<10; i++)
     {
        String ans = JOptionPane.showInputDialog ("Hello User, would you like to encrypt or decrypt?");
        ans = ans.toUpperCase();        
        int a = 0;

        if (ans.contains("EN")||ans.contains("ENCRYPT"))
        {
           String pass = "";
           pass = JOptionPane.showInputDialog ("Please type your phrase into input:");          

           for (int j=0; j<pass.length(); j++)
           {
              char c = pass.charAt(j);
              a = (int) c;
              System.out.print(a);
           }
           break;
        }


        if (ans.contains("DE")||ans.contains("DECRYPT"))
        {
           String pass = "";
           pass = JOptionPane.showInputDialog ("Please type the encrypted code into input:");          

           for (int k=0; k<pass.length(); k++)
           {
              char c = pass.charAt(k);
              a = (int)(c);
              i = (char) a;
              System.out.print(a);
           }
           break;
        }

        System.out.println("Sorry I don't understand, please retry.");
     }
  }
}
import java.io.*;
导入javax.swing.*;
公共类简单加密{
公共静态void main(字符串[]args)引发异常
{
BufferedReader inKb=新的BufferedReader(新的InputStreamReader(System.in));

对于(inti=0;i,如果您尝试的实际上是任何java字符串(基于UTF-16)的ASCII编码(加密前?),您可以将其编码为:此编码方案就是为此创建的


它是用java(和其他语言一样)进行编码/解码的。

如果您想要的实际上是任何java字符串(基于UTF-16)的ASCII编码(加密前?),您可以将其编码为:此编码方案就是为此而创建的


它是用java(和其他语言一样)进行编码/解码的。

您似乎想要得到的是表示输入字符串某种字符编码(而不是加密)的字节数组。然后您似乎想要显示编码字符的八进制值。如果您只需要我们的ASCII码,那么您将得到所有(可打印的)最多177个八进制字符。如果需要特殊字符,则需要选择更具体的字符集(IBM OEM或西文拉丁语是常用字符集)。也可以使用UTF-8,但它可以将单个字符编码为多个字节

public static String toOctalString(final byte[] encoding) {
    final StringBuilder sb = new StringBuilder(encoding.length * 4);
    for (int i = 0; i < encoding.length; i++) {
        if (i != 0) {
            sb.append("|");
        }
        sb.append(Integer.toOctalString(encoding[i] & 0xFF));
    }
    return sb.toString();
}

public static byte[] fromOctalString(final String octalString) {
    final ByteArrayOutputStream baos = new ByteArrayOutputStream(octalString.length() / 4 + 1);
    final Matcher m = Pattern.compile("[0-7]{1,3}").matcher(octalString);
    while (m.find()) {
        baos.write(Integer.parseInt(m.group(), 8));
    }
    return baos.toByteArray();
}

public static void main(String[] args) {
    final String userInput = "owlstæd";
    // use the common Latin-1 encoding, standardized in ISO 8859 as character set 1
    // you can replace with ASCII, but the ASCII characters will encode fine for both
    final byte[] userInputEncoded = userInput.getBytes(Charset.forName("ISO8859-1"));
    final String octalString = toOctalString(userInputEncoded); 
    System.out.println(octalString);

    final byte[] userInputEncoded2 = fromOctalString(octalString);
    final String userInput2 = new String(userInputEncoded2, Charset.forName("ISO8859-1"));
    System.out.println(userInput2);
}
公共静态字符串toOctalString(最终字节[]编码){
最终StringBuilder sb=新StringBuilder(encoding.length*4);
for(int i=0;i
您似乎想要得到的是表示输入字符串某种字符编码(而不是加密)的字节数组。然后您似乎想要显示编码字符的八进制值。如果您只需要我们的ASCII码,那么您将得到所有(可打印)最多177个八进制字符。如果需要特殊字符,则需要选择更具体的字符集(IBM OEM或西文拉丁语是常用字符集)。也可以使用UTF-8,但它可以将单个字符编码为多个字节

public static String toOctalString(final byte[] encoding) {
    final StringBuilder sb = new StringBuilder(encoding.length * 4);
    for (int i = 0; i < encoding.length; i++) {
        if (i != 0) {
            sb.append("|");
        }
        sb.append(Integer.toOctalString(encoding[i] & 0xFF));
    }
    return sb.toString();
}

public static byte[] fromOctalString(final String octalString) {
    final ByteArrayOutputStream baos = new ByteArrayOutputStream(octalString.length() / 4 + 1);
    final Matcher m = Pattern.compile("[0-7]{1,3}").matcher(octalString);
    while (m.find()) {
        baos.write(Integer.parseInt(m.group(), 8));
    }
    return baos.toByteArray();
}

public static void main(String[] args) {
    final String userInput = "owlstæd";
    // use the common Latin-1 encoding, standardized in ISO 8859 as character set 1
    // you can replace with ASCII, but the ASCII characters will encode fine for both
    final byte[] userInputEncoded = userInput.getBytes(Charset.forName("ISO8859-1"));
    final String octalString = toOctalString(userInputEncoded); 
    System.out.println(octalString);

    final byte[] userInputEncoded2 = fromOctalString(octalString);
    final String userInput2 = new String(userInputEncoded2, Charset.forName("ISO8859-1"));
    System.out.println(userInput2);
}
公共静态字符串toOctalString(最终字节[]编码){
最终StringBuilder sb=新StringBuilder(encoding.length*4);
for(int i=0;i
您已经说出了您要做的事情,并给出了一些代码…但没有实际问题。(请注意,
char
int
的转换将为您提供UTF-16代码单元的Unicode值…请思考ASCII以外的内容。)我如何将用户给定的字符串更改为ASCII值(加密),然后获取这些值(例如,hello=104101108111)并将其更改为字符(解密)?我不知道它是如何被称为“加密”的。这是实际加密之前的第一步吗?是的,我所需要的只是将字符串更改为ASCII值(例如,h=104),然后将其更改回字符串。我不想让它变得太复杂,正如您所看到的(UTF-16)所以我不能用一个数组来存储每个ASCII值,然后把数字转换成一个字符,比如:char ch=(char)(65)?你已经说了你想做什么,并给出了一些代码…但没有实际问题。(请注意,
char
int
的转换将为您提供UTF-16代码单元的Unicode值……请考虑ASCII以外的内容。)如何将用户给定的字符串更改为ASCII值(加密),然后获取值(例如hello=104101108111)并将其更改为字符(解密)?我看不出它是如何调用的“加密”。这是真正加密之前的第一步吗?是的,我只知道