gpt4 book ai didi

java - 从二进制文件读取并将某些信息转换为字符串

转载 作者:行者123 更新时间:2023-12-02 07:37:16 25 4
gpt4 key购买 nike

我必须从二进制文件中读取数据,例如软件版本、供应商等。我必须在文本区域中显示输出。读取配置后,用户可以通过串行端口发送选定的文件。我在这里写了一些代码:

InputStream is=null;
try {
File urt=filebrowser.getSelectedFile();
is = new FileInputStream(urt);
DataInputStream in = new DataInputStream(is);
long l=urt.length();

char[] bytes= new char[(int)l];
int o=bytes.length;
errlabel.setText(String.valueOf(o));
String content;
int offset;
BufferedReader br = new BufferedReader(new InputStreamReader(in));
int numRead;
try {

br.read(bytes, 0, 46);
while ((content = br.readLine()) != null) {
StringBuilder sb=new StringBuilder(content);

jTextArea1.setText(sb.toString());
errlabel.setText(""+sb.length());


}





} catch (IOException ex) {
Logger.getLogger(MyBoxUpdator.class.getName()).log(Level.SEVERE, null, ex);
}


} catch (FileNotFoundException ex) {
Logger.getLogger(MyBoxUpdator.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
is.close();
} catch (IOException ex) {
Logger.getLogger(MyBoxUpdator.class.getName()).log(Level.SEVERE, null, ex);
}
}

和输出

EE��6**UT�h��}�(:�萢Ê�*:�茢���_��(RQ��N���S��h����rMQ��(_Q����9mTT��\�nE�PtP�!E�UtBߌz��z���������

可能出了什么问题?

最佳答案

您正在将字节转换为字符

所以你必须告诉使用什么编码。如果您没有指定,InputStreamReader(它是:从字节输入流中读取字符的读取器)将使用默认值。我确信默认值不是您所需要的。

试试这个:

new InputStreamReader(in, "UTF-8"); // or whatever encoding you need

作为一般规则:在处理字符到字节转换时始终指示编码,反之亦然! :)

编辑

当然,我假设您的文件已编码为文本。如果它是二进制的,就像 @alfasin 所说的那样......那么......看到垃圾是正常的。您应该读取字节并写入表示它们的字符(例如,作为每个字节的十六进制表示)。

关于java - 从二进制文件读取并将某些信息转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com