如何将Java字符串转换为ASCII字节数组?

时间:2011-04-16 16:49:57

标签: java arrays string ascii bytearray

如何将Java字符串转换为ASCII字节数组?

10 个答案:

答案 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)

如果您是用户,则有一个方便的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();
        }
    }
}