我正在编写一个非常小的x86汇编程序,它当前输出十六进制(或二进制,它是微不足道的更改)机器代码。如何将这个十六进制/二进制文件写入一个我可以实际执行的文件中?
对于简单的输入,例如:
mov ax, #1
ret
汇编程序将输出:
66b80100
c3
答案 0 :(得分:0)
要在C ++中将十六进制值附加到二进制文件,您必须将其表示为原始int值并将其写入文件。
因此:
void writeHexStringToFile(string hex, ofstream& file) {
vector<string> hexBytes = hexBytesFromString(hex);
for (unsigned i = 0; i < hexBytes.size(); i++) {
istringstream buff(hexBytes.at(i));
int hexVal;
buff >> hex >> hexVal;
file.write(reinterpret_cast<char*>(&hexVal), sizeof(int));
}
}
答案 1 :(得分:0)
你可以使用比C ++更容易的python,在这种情况下你不需要任何其他强大的低级别。
import sys
string = open(sys.argv[1],'r').read()
sys.stdout.write(string.decode("hex"))
将它放入.py文件并使用python file.py [带有hex的文件]
运行它但首先要替换换行符。你可以使用
cat file.hex | tr -d '\n' > file2.hex
或者python