EDIT (2018): Die bearbeitete Geschwisterantwort von @xinyongCheng ist ein einfacherer Ansatz und sollte die akzeptierte Antwort sein.
Ihr Ansatz wäre vernünftig, wenn Sie wüssten, dass die Bytes im Standardzeichensatz der Plattform enthalten sind. In Ihrem Beispiel ist dies wahr, weilk.getBytes()
die Bytes im Standardzeichensatz der Plattform zurückgegeben werden.
Häufiger möchten Sie die Codierung angeben. Es gibt jedoch einen einfacheren Weg, dies zu tun als die von Ihnen verknüpfte Frage. Die String-API bietet Methoden, die in einer bestimmten Codierung zwischen einem String- und einem Byte [] -Array konvertieren. Diese Methoden empfehlen die Verwendung von CharsetEncoder / CharsetDecoder "wenn mehr Kontrolle über den Decodierungsprozess erforderlich ist".
Um die Bytes aus einem String in einer bestimmten Codierung abzurufen, können Sie eine Geschwister-Methode getBytes () verwenden:
byte[] bytes = k.getBytes( StandardCharsets.UTF_8 );
Um Bytes mit einer bestimmten Codierung in einen String einzufügen, können Sie einen anderen String-Konstruktor verwenden:
String v = new String( bytes, StandardCharsets.UTF_8 );
Beachten Sie, dass dies ByteBuffer.array()
eine optionale Operation ist. Wenn Sie Ihren ByteBuffer mit einem Array erstellt haben, können Sie dieses Array direkt verwenden. Wenn Sie andernfalls sicher sein möchten, verwenden Sie ByteBuffer.get(byte[] dst, int offset, int length)
, um Bytes aus dem Puffer in ein Byte-Array zu übertragen.