Так что в принципе у меня проблема с записью в байты с использованием python3. Я гарантировал, что содержимое соответствует ожидаемому, используя печать, но он все еще пишет неправильный контент. В основном пишет первую строку, скопированную 4 раза. Я использую Latin-1. По сути, единственные необработанные байты, которые я включаю в b-строки, это 0x80
и 0x81
(т.е. \x80
и \x81
). Я пишу это, используя функцию здания open () в режиме "wb"
. Кто-нибудь знает, что происходит?
Редактировать: Вот основной метод, используемый для создания файла. Как уже говорилось, fs - это файл, открытый в режиме wb, и он печатается, как и ожидалось.
def assemble_file(self, fs):
"must call lex_from_asm_text before assembling"
self.bin_raw_content += b"ROSAPYVM\x81"
for x in self._asm_stripped:
try:
bcode = bytes([ops.__dict__[x[0]]])
print(bcode)
print([x[1:]])
self.bin_raw_content += b"\x00"
self.bin_raw_content += bcode
for i in x[1:]:
self.bin_raw_content += b"\x80"
print(i.encode("latin-1"))
self.bin_raw_content += i.encode("latin-1")
except IndexError:
pass
print(self.bin_raw_content)
fs.write(self.bin_raw_content)