我正在用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)
有任何帮助吗?百万谢谢!
答案 0 :(得分:3)
使用Integer.parseInt(s, 16)
代替Integer.decode(string)
“16”告诉它它是一个十六进制字符串