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

2022-08-31 11:57:47

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


答案 1

使用 getBytes 方法,为其指定适当的字符集(或名称)。Charset

例:

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

如果需要更多控制(例如,在遇到 7 位 US-ASCII 以外的字符时引发异常),则可以使用:CharsetDecoder

private static byte[] strictStringToBytes(String s, Charset charset) throws CharacterCodingException {
    ByteBuffer x  = charset.newEncoder().onMalformedInput(CodingErrorAction.REPORT).encode(CharBuffer.wrap(s));
    byte[] b = new byte[x.remaining()];
    x.get(b);
    return b;
 }

在 Java 7 之前,可以使用:。枚举、编码器以及专用方法已经在Java 7中引入。byte[] b = s.getBytes("US-ASCII");StandardCharsetsgetBytes(Charset)


答案 2

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

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

除了不在源代码中对任意字符集名称进行硬编码之外,它还具有更大的优势:Charsets.US_ASCII类型(不是)因此您避免选中了仅从String.getBytes(String)而不是String.getBytes(Charset)抛出的UnsupportedEncodingExceptionCharsetString

在Java 7中,有等效的标准字符类。