如何将Java字符串转换为ASCII字节数组?
答案 0 :(得分:140)
使用getBytes
方法,为其指定适当的Charset
(或Charset
名称。
示例:
String s = "Hello, there.";
byte[] b = s.getBytes(StandardCharsets.US_ASCII);
(在Java 7之前:byte[] b = s.getBytes("US-ASCII");
)
答案 1 :(得分:22)
如果您是guava用户,则有一个方便的Charsets
课程:
String s = "Hello, world!";
byte[] b = s.getBytes(Charsets.US_ASCII);
除了不对源代码中的任意字符集名称进行硬编码外,它还有一个更大的优势:Charsets.US_ASCII
属于Charset
类型(不是String
),因此您可以避免使用{{1}} 3}}仅从UnsupportedEncodingException
引发,而不是从String.getBytes(String)
引发。
在Java 7中,有等效的String.getBytes(Charset)
类。
答案 2 :(得分:5)
您尝试的代码中只有一个字符错误:
Charset characterSet = Charset.forName("US-ASCII");
String string = "Wazzup";
byte[] bytes = String.getBytes(characterSet);
^
注意大写“String”。这会尝试在字符串类上调用静态方法,该方法不存在。相反,您需要在字符串实例上调用该方法:
byte[] bytes = string.getBytes(characterSet);
答案 3 :(得分:5)
其他提出的解决方案的问题是它们会丢弃无法直接映射到ASCII的字符,或者用?
之类的标记字符替换它们。
您可能希望将重音字符转换为没有重音的相同字符。有一些技巧要做(包括自己构建静态映射表或利用为unicode定义的现有'规范化'),但这些方法还远未完成。
你最好的选择是使用junidecode库,这个库既不能完成,也包含了以最合理的方式将Unicode音译为ASCII的经验。
答案 4 :(得分:4)
String s = "ASCII Text";
byte[] bytes = s.getBytes("US-ASCII");
答案 5 :(得分:4)
如果您在Android中碰巧需要此功能,并且想要使用早于FroYo的任何功能,您还可以使用EncodingUtils.getAsciiBytes():
byte[] bytes = EncodingUtils.getAsciiBytes("ASCII Text");
答案 6 :(得分:2)
在我的字符串中,我有泰语字符(TIS620编码)和德语变音符号。敏捷的答案让我走上了正确的道路。而不是.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;
}
答案 7 :(得分:0)
将字符串转换为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);
}
答案 8 :(得分:0)
我找到了解决方案。实际上,Android 64中没有Base64类。链接如下所示。
byte[] byteArray;
byteArray= json.getBytes(StandardCharsets.US_ASCII);
String encoded=Base64.encodeBytes(byteArray);
userLogin(encoded);
以下是Base64类的链接:http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html
答案 9 :(得分:-2)
试试这个:
/**
* @(#)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();
}
}
}