用Java直接将存储为字符串的十六进制数写入hex文件?

时间:2015-10-10 07:59:50

标签: java hex output

我正在用Java编写一个小型汇编程序,它将ARM汇编代码转换为将由FPGA上的虚拟ARM CPU执行的hex文件。

例如

Sub R0, r15,    R15
Add R2,    R0, #5
aDD R3, R0, #12
SUB R7, r3, #9

将被翻译为机器(十六进制)代码

E04F000F
E2802005
E280300C
E2437009

在我的代码中以字符串数组output逐行存储为字符串。

那么如何将机器代码写入hex文件完全 字面是什么?而不是被编码为文本。

因此,当我使用像Hexeditor这样的工具打开输出文件时,它将完全显示编码(当然没有换行符号......)

E0 4F 00 0F E2 80 20 05 E2 80 30 0C E2 43 70 09

目前我尝试过:

        OutputStream os = new FileOutputStream("hexcode.hex");
        for (String s : output) {
            int value = Integer.decode(s);
            os.write(value);                
        }
        os.close();

但它给了我错误

Exception in thread "main" java.lang.NumberFormatException: For input string:"E04F000F"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:740)
at java.lang.Integer.decode(Integer.java:1197)
at assembler.Assembler.main(Assembler.java:220)

有任何帮助吗?百万谢谢!

1 个答案:

答案 0 :(得分:3)

使用Integer.parseInt(s, 16)代替Integer.decode(string)

“16”告诉它它是一个十六进制字符串

相关问题