gpt4 book ai didi

java - 在Java中直接将存储为字符串的十六进制数字写入十六进制文件?

转载 作者:行者123 更新时间:2023-12-01 22:04:21 24 4
gpt4 key购买 nike

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

例如

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

将被转换为机器(十六进制)代码为

E04F000F
E2802005
E280300C
E2437009

它们在我的代码中以字符串形式逐行存储在字符串数组输出中。

那么我怎样才能将机器代码写入十六进制文件,使其完全与它字面意思一样呢?而不是被编码为文本。

因此,当我使用 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)

有什么帮助吗?万分感谢!

最佳答案

使用Integer.parseInt(s, 16)而不是Integer.decode(string)

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

关于java - 在Java中直接将存储为字符串的十六进制数字写入十六进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33051727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com