[解決済み】バイト配列を文字列に変換する方法と、逆に文字列を文字列に変換する方法は?
2022-03-30 20:42:47
質問
Androidでバイト配列を文字列に変換しなければならないのですが、バイト配列に負の値が含まれています。
その文字列を再度バイト配列に変換すると、元のバイト配列の値とは異なる値が取得されます。
どうすれば正しく変換されるのでしょうか?私が変換に使っているコードは以下の通りです。
// Code to convert byte arr to str:
byte[] by_original = {0,1,-2,3,-4,-5,6};
String str1 = new String(by_original);
System.out.println("str1 >> "+str1);
// Code to convert str to byte arr:
byte[] by_new = str1.getBytes();
for(int i=0;i<by_new.length;i++)
System.out.println("by1["+i+"] >> "+str1);
この問題で行き詰まっています。
どうすればいいですか?
バイト配列には、何らかのエンコーディングが必要です。負の値がある場合、エンコーディングはASCIIである必要はありません。これがわかれば、バイトの集合を文字列に変換することができます。
byte[] bytes = {...}
String str = new String(bytes, StandardCharsets.UTF_8); // for UTF-8 encoding
使用できるエンコーディングはたくさんあります。 Oracle javadocs .
関連
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] スタックトレースを文字列に変換するにはどうすればよいですか?
-
[解決済み] JavaでInputStreamをバイト配列に変換する
-
[解決済み] Javaでバイト配列から16進文字列に変換する方法は?
-
[解決済み] Java バイト配列→文字列→バイト配列
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました
-
[解決済み] 文字列の巻き方
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について