Введение
В жизни бывает необходимо преобразовать строку в массив байтов или наоборот. Это можно сделать с использованием наборов символов. В этом практическом занятии мы научимся выполнять оба типа преобразований несколькими разными методами.
В жизни бывает необходимо преобразовать строку в массив байтов или наоборот. Это можно сделать с использованием наборов символов. В этом практическом занятии мы научимся выполнять оба типа преобразований несколькими разными методами.
Метод getBytes() класса String предоставляет удобный способ получить массив байтов. Класс String содержит три перегруженные версии метода getBytes().
String s = "demo!";
byte[] byteArr = s.getBytes();
import java.io.UnsupportedEncodingException;
String s = "demo!";
String namedCharset = "UTF-16";
byte[] byteArr = s.getBytes(namedCharset);
import java.nio.charset.Charset;
import java.util.Arrays;
String s = "demo!";
Charset charset = Charset.forName("UTF-16");
byte[] byteArr = s.getBytes(charset);
import java.nio.charset.StandardCharsets;
String s = "demo????????????";
Charset charset = StandardCharsets.ISO_8859_1;
byte[] byteArr = charset.encode(s).array();
import java.nio.CharBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CodingErrorAction;
import java.nio.charset.StandardCharsets;
String s = "demo????????????";
CharsetEncoder charsetEncoder = StandardCharsets.ISO_8859_1.newEncoder();
charsetEncoder.onMalformedInput(CodingErrorAction.IGNORE);
charsetEncoder.onUnmappableCharacter(CodingErrorAction.REPLACE)
.replaceWith(new byte[] {-121});
byte[] byteArr = charsetEncoder.encode(CharBuffer.wrap(s)).array();
byte[] byteArr = {-2, -1, 0, 100, 0, 101, 0, 109, 0, 111, 0, 33};
String stringFromBytes = new String(byteArr, "UTF-16");
Charset charset = Charset.forName("UTF-16");
byte[] byteArr = {-2, -1, 0, 100, 0, 101, 0, 109, 0, 111, 0, 33};
String stringFromBytes = new String(byteArr, charset);
import java.nio.ByteBuffer;
Charset charset = StandardCharsets.UTF_16;
byte[] byteArr = {-2, -1, 0, 100, 0, 101, 0, 109, 0, 111, 0, 33, -10};
String stringFromBytes = charset.decode(ByteBuffer.wrap(byteArr)).toString();
import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CodingErrorAction;
import java.nio.charset.StandardCharsets;
CharsetDecoder charsetDecoder = StandardCharsets.UTF_16.newDecoder();
charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPLACE)
.onMalformedInput(CodingErrorAction.REPLACE)
.replaceWith("*");
byte[] byteArr = {-2, -1, 0, 100, 0, 101, 0, 109, 0, 111, 0, 33, -10};
String stringFromBytes = charsetDecoder.decode(ByteBuffer.wrap(byteArr)).toString();
Скопируйте код, который вы хотите запустить, в файл, например, ~/project/Conversion.java, и выполните следующую команду в терминале:
javac Conversion.java && java Conversion
В заключение, существуют несколько способов преобразования строки в массив байтов или массива байтов в строку. Самый удобный способ - использовать метод getBytes() класса String для генерации массива байтов, а затем использовать конструктор класса String для генерации строки из массива байтов. Альтернативно, мы можем использовать Charsets, CharsetEncoders и CharsetDecoders для выполнения преобразований.