チェックこのアウト:https://docs.oracle.com/javase/7/docs/api/java/lang/Byte.html#toString(byte)
のtoString
のpublic static String型のtoString(バイトb)
は、指定されたbyteを表す新規Stringオブジェクトを返します。戻り値を変換するバイト - B:指定されたバイト
の文字列 表現関連項目:持つInteger.toString(int型)
を基数 は10
パラメータであると仮定されます
問題は、文字列をバイトに変換することですが、次に に行き、そのバイトを文字列/文字(基数10の数字として解釈 - 基数= 10)に変換することです。各文字(c = 99、o = 111、o = 111、l = 108)のうち、基数10の数字です。各桁の数字。文字列をバイトに戻すと、の数字の文字ののバイトが得られます。
あなたが実際に行っていることに応じて、別のアプローチを見つける必要があります。バイトに変換することで何を表示しようとしているのかははっきりしませんが、ビットストリング(0と1の数字で構成された文字列)に変換したい場合は、より多くの作業を行う必要があります。
構築している文字列をカンマ(たとえば99,111,111,108)のように区切っている場合、区切られた部分文字列が(通常のasciiの)整数であると仮定し、それらを 'Integer.parseInt(s)'に渡すことができますまたは 'Integer.valueOf(s)'に変換し、charへの変換を行い、文字列に文字を構築します。例えば
は:
StringBuilder sb = new StringBuilder();
String str = "99,111,111,108"; // result of initial conversion
String[] sa = str.split(",");
char ch = '';
for(String s : sa) {
ch = Integer.parseInt(s);
sb.append(ch);
}
FileOutputStream fos = new FileOutputStream("new.txt");
fos.write(sb.toString().getBytes());
fos.close();
ここで重要な注意事項は、Javaのために、少なくとも、文字はcharがASCII文字として解釈され、彼らことを除いてちょうど整数である、ということです。
基本的なジレンマは、バイトを文字列に変換することは、文脈が失われたの破壊的な操作です。私。コンピュータは元のバイトについて何も知らなくて、新しく生成された文字列だけを知っています。バイトはバイナリデータですが、文字列は文字のグループです(一般的にasciiですが、さまざまな種類のUTFもあります)。
このような文字列を作成するとどうなるでしょうか? 'String x = new String(data、" UTF-8 ");' ...残りのプログラムは、あなたが望むように動作しますか? – dnault
いいえ、文字列をgetBytes()以外のバイトに変換する方法はありますか? – Lui
@Lui - できますが、 "99111111108"は文字列ではありません。バイトを小数点として表現した文字列です。クール - > [99] [111] [111] [108]。 "cool"をバイトに戻す必要があります。 "99111111108" – xpcoffee