【问题标题】:Reading data from binary file correctly in Java在 Java 中正确地从二进制文件中读取数据
【发布时间】:2015-02-05 08:36:22
【问题描述】:

我在阅读理解数据时遇到问题,当我使用 Parsing (char) 时,数字变成了 ASCII 中的奇怪字符,这是代码:

static void doTestByteFiles() throws IOException {

   File file = new File("sample1.data");
   FileOutputStream outStream = new FileOutputStream(file); //Warning!!!!

   byte[] outByteArray = {10,20,30,40,50,60,70,80,(byte)'J',(byte)'a',(byte)'v',(byte)'a'};


   outStream.write(outByteArray);
   outStream.close();

   FileInputStream inStream = new  FileInputStream(file);

   int fileSize = (int) file.length();
   byte[] inByteArray = new byte[fileSize];
   inStream.read(inByteArray);

   for (int i = 0; i < fileSize; i++) {
     System.out.println((char) inByteArray[i]);
   }

inStream.close();
 }

结果:

( 2

我期望的结果: 10 20 30 40 50 60 70 80 Ĵ 一种 v 一个

我尝试使用 (byte) 而不是 (char),同样的问题,但 Java 字变成了 ASCII 中的数字,请帮忙?

【问题讨论】:

  • 您的期望是有缺陷的。您应该查找一个 ascii 表。
  • 你在混合字符和字节......所以退后一步,准确描述你想要做什么。
  • 您是否在实际的 ASCII 表中查找过这些值?
  • 伙计们,我正在尝试使用 byteArray 来存储数据,然后从 ASCII 表中读取数据,例如 'a' 字母等于 Integer 中的 97,所以我尝试用 97 代替a' 在数组中,但有另一个错误。谢谢
  • 这就是我说的;您正在混合字符和字节。 Java 不使用 ASCII 而是使用 Unicode

标签: java file encryption netbeans binary


【解决方案1】:

byte[] 数组中的数字被解释为字节值。您必须编写整数并将它们转换为数组内的字节。

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多