Kaitai Struct ürününün bir ikili yapıyı tersine çevirmesini sağlamaya çalışıyorum. seq
alanları amaçlandığı gibi çalışır, ancak instances
istediğim gibi çalışmıyor.Kaitai Yapısı: bir koşullu hesaplanmış örnekler
instances:
index_const:
value: '_root.header.consts[idx - 0x40]'
if: idx >= 0x40 and idx <= 0x4f
: Ben şu bildiriyi kullanmaya çalıştığınızda, ancak
types:
header:
seq:
# ...
- id: consts
type: u8
repeat: expr
repeat-expr: 0x10
:
Benim ikili biçim ben consts
dizi subfield ile header
alan olarak ayrıştırmak sabitler listesini içeren bir başlık içerir
Bu index_const
değerini dizisine bakarak ve yalnızca idx
[0x40..0x4f] aralığındaysa hesaplamak için tasarlanmıştır.
benim hedef dili olarak Python kullanmak ve bunu gibi kodu oluşturmak gerektiğini varsayalım: Ancak
@property
def index_const(self):
if hasattr(self, '_m_index_const'):
return self._m_index_const
if self.idx >= 64 and self.idx <= 79:
self._m_index_const = self._root.header.consts[(self.idx - 64)];
return self._m_index_const
, ne olsun:
@property
def index_const(self):
if hasattr(self, '_m_index_const'):
return self._m_index_const
self._m_index_const = self._root.header.consts[(self.idx - 64)];
return self._m_index_const
sadece ben mi, Neredeyim Bariz bir şey eksik mi, yoksa Kaitai Struct'ta bir böcek mi?
Teşekkürler! Bu bir hata olduğunu üzücü :(Geçici çözümler hakkında herhangi bir fikir veya bir hata için ne kadar beklemeliyim? –
En basit çözüm, 'index_const'na erişmek istediğiniz yerde' if 'ne varsa, sadece satır içi yapmak olabilir Gerçek kodda bunu yapmak genellikle sorun değil, ancak KS iç ifade dili için biraz zor olabilir, sizi güncel tutmaya çalışacağım. – GreyCat