如何将Javastring转换为ASCII字节数组?

如何将Javastring转换为ASCII字节数组?

使用getBytes方法,给它适当的Charset (或Charset名称)。

例:

 String s = "Hello, there."; byte[] b = s.getBytes(StandardCharsets.US_ASCII); 

(在Java 7之前: byte[] b = s.getBytes("US-ASCII");

如果你是一个番石榴用户,有一个方便的Charsets类:

 String s = "Hello, world!"; byte[] b = s.getBytes(Charsets.US_ASCII); 

除了不在源代码中对任意字符集名称进行硬编码,它具有更大的优势: Charsets.US_ASCIICharsettypes(不是String ),因此您可以避免检查UnsupportedEncodingException仅从String.getBytes(String)引发,而不是从String.getBytes(Charset)

在Java 7中有相同的StandardCharsets类。

您尝试的代码中只有一个字符错误:

 Charset characterSet = Charset.forName("US-ASCII"); String string = "Wazzup"; byte[] bytes = String.getBytes(characterSet); ^ 

注意大写“string”。 这试图调用一个不存在的string类的静态方法。 相反,你需要调用你的string实例的方法:

 byte[] bytes = string.getBytes(characterSet); 

其他build议的解决scheme的问题是,他们将删除不能直接映射到ASCII的字符,或将其replace为标记字符,如?

例如,您可能希望将重音字符转换为没有重音的相同字符。 有几个技巧可以做到这一点(包括自己构build一个静态映射表或利用为unicode定义的现有“规范化”),但这些方法还远远没有完成。

你最好的select是使用junidecode库,它不能完成,但是以最正常的将Unicode转换为ASCII的方式结合了许多经验。

 String s = "ASCII Text"; byte[] bytes = s.getBytes("US-ASCII"); 

如果你碰巧在Android中需要这个,并且希望使用它来处理比FroYo更早的东西,那么你也可以使用EncodingUtils.getAsciiBytes() :

 byte[] bytes = EncodingUtils.getAsciiBytes("ASCII Text"); 

在我的string中,我有泰文字符(TIS620编码)和德语变音符号。 agiles的答案使我走上了正确的道路。 而不是.getBytes()我现在使用

  int len = mString.length(); // Length of the string byte[] dataset = new byte[len]; for (int i = 0; i < len; ++i) { char c = mString.charAt(i); dataset[i]= (byte) c; } 

将string转换为ascii值。

  String test = "ABCD"; for ( int i = 0; i < test.length(); ++i ) { char c = test.charAt( i ); int j = (int) c; System.out.println(j); } 

尝试这个:

 /** * @(#)demo1.java * * * @author * @version 1.00 2012/8/30 */ import java.util.*; public class demo1 { Scanner s=new Scanner(System.in); String str; int key; void getdata() { System.out.println ("plase enter a string"); str=s.next(); System.out.println ("plase enter a key"); key=s.nextInt(); } void display() { char a; int j; for ( int i = 0; i < str.length(); ++i ) { char c = str.charAt( i ); j = (int) c + key; a= (char) j; System.out.print(a); } public static void main(String[] args) { demo1 obj=new demo1(); obj.getdata(); obj.display(); } } }