Java 如何将字符串更改为ascii值并返回为字符串?
我正在尝试制作一个简单的加密程序,将字符串转换为等效的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
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)并将其更改为字符(解密)?我看不出它是如何调用的“加密”。这是真正加密之前的第一步吗?是的,我只知道