如何使用Java中的二进制数据?

时间:2014-08-04 22:59:21

标签: java binary

我正在研究一种简单的VM /解释器程序,用于我实现的简单玩具语言。目前,编译器会发出文本汇编指令,例如pushadd,以便VM执行。

最近我认为,为了性能和空间,实际编译为二进制操作码而不是文本操作码会更好。 (这个玩具项目实际上并不重要,但这是为了学习)。

很快我意识到,尽管我认为自己是一个不错的Java程序员,但我不知道如何使用Java中的二进制数据。毫无头绪。

关于这一点,我有两个问题:

  1. 如何将二进制数据保存到文件中?例如,我想将字节00000001然后字节00100000保存到文件中(每个字节将是VM的操作码) - 我该怎么做?

  2. 如何从磁盘上的文件中读取二进制数据,将其保存在变量中,解析并操作它?我是否使用常规字符串使用的常用I / 0和解析技术,或者这是不同的?

  3. 感谢您的帮助

4 个答案:

答案 0 :(得分:0)

使用FileOutputStream。它有一个write(byte[] b)方法将一个字节数组写入一个文件,一个write(int b)方法将一个字节写入该文件。

因此,要保存00000001后跟00100001,您可以执行以下操作:

FileOutputStream file = new FileOutputStream(new File(path));
file.write(1);
file.write(33);

同样,您可以阅读FileInputStream来读取二进制文件。

答案 1 :(得分:0)

您应该能够使用任何 OutputStream来执行此操作,因为它们都有write方法,需要byte。例如,您可以使用FileOutputStream

同样,您可以使用InputStreamread方法来读取字节。

答案 2 :(得分:0)

OutputStream及其子类型具有将字节写入文件的方法。 DataOutputStream有其他方法可以编写intlongfloatdouble等等,如果您需要这些方法,尽管它以大端字节顺序写入。相应的输入流具有相同的读取方法。

答案 3 :(得分:0)

您可能想尝试使用ByteArrayInputStreamDataOutputStream

有关详细信息,请参阅Oracle documentation

另外,请查看此类似问题:How to output binary data to a file in Java?