将字节数组转换为String

时间:2017-06-14 11:04:03

标签: java arrays string byte

我尝试将字节数组转换为public class FixSongs extends SwingWorker<String, Object> { @Override public String doInBackground() throws Exception { try { new FixSongsController().start(); if (!isCancelled()) { new FixSongsReportCreator().createReport(); } return ""; } catch (Throwable ex) { MainWindow.logger.log(Level.SEVERE, ex.getMessage(), ex); throw ex; } } @Override protected void done() { SongKong.mainWindow.dialog.close(); if (!isCancelled()) { ShowCounters showCounters = new ShowReport(); } } } 并使用public class FixSongsDialog extends RecordBasedProgressDialog { .... @Override public void cancelTask() { try { swingWorker.cancel(true); CreateReport createReport = new CreateReport(); createReport.execute(); this.dispose(); } catch(Exception ex) { MainWindow.logger.log(Level.SEVERE,ex.getMessage(),ex); throw ex; } } class CreateReport extends SwingWorker<String, Object> { @Override public String doInBackground() throws Exception { try { new FixSongsReportCreator().createReport(); return ""; } catch(Exception ex) { MainWindow.logger.log(Level.SEVERE,ex.getMessage(),ex); throw ex; } } @Override protected void done() { ShowCounters showCounters = new ShowReport(); } } } 将其写入文件(仅用mc检查它的值,我需要内容在字符串中) 我的问题归纳起来了:

String

输出.txt的内容为十六进制,带有mc: 00 00 01 EF | BF BD 0A
尽管它应该是:00 00 01 B3

是什么原因引起的?我猜它是编码,但我不知道我应该使用什么类型的编码(我尝试了一些Cp ###类型,但到目前为止它们都没有工作)。

更新
每个转换为字符串的负字节都会产生:EF BF BD
因此,仅当无符号字节值小于128时才有效。 所以问题是如何在字符串中表示大于127的字节,就像我用0-127字节那样?

1 个答案:

答案 0 :(得分:2)

这样就可以了。它将按预期输出00 00 01 b3

FileOutputStream fos = new FileOutputStream("filename");
fos.write(b);
fos.close();