我想知道是否有一种简单的方法可以将包含已知布局的数据结构的字节数组“转换”为对象。byte[] 由 BCD 压缩值、1 或 2 字节整数值和字符值组成。我通过读取带有FileInputStream
.
在 IBM 大型机系统上工作过的人马上就会明白我的意思——问题是我必须在 Java 中做同样的事情。
欢迎任何建议。
我想知道是否有一种简单的方法可以将包含已知布局的数据结构的字节数组“转换”为对象。byte[] 由 BCD 压缩值、1 或 2 字节整数值和字符值组成。我通过读取带有FileInputStream
.
在 IBM 大型机系统上工作过的人马上就会明白我的意思——问题是我必须在 Java 中做同样的事情。
欢迎任何建议。
不,因为对象布局可能会根据您使用的虚拟机、代码运行的架构等而有所不同。
依靠内存中的表示对我来说总是很脆弱......
我建议您看一下DataInputStream
-我怀疑这将是解析数据的最简单方法。
不是马上,但是如果你确切地知道字节代表什么,你可以很容易地写一个。
要转换 BCD 压缩数字,您需要提取编码的两位数字。四个低位对最低位进行编码,您可以通过 &'ing 与 15 (1111 二进制)得到它。高四位编码通过右移 4 位和 &'ing 15 获得的最高位。
另请注意,如果您实际上正在这样做,IBM 很可能有可用的工具。对于 IBM,我寻找 jt400 IBM Toolbox for Java。