길이 필드가 비트 단위이고 값 필드가 해당 길이에 해당하는 2 진 구조입니다. 값 길이는 필드의 끝이 옥텟 경계에 오도록하기 위해 충분한 후행 비트로 채워집니다. 그 길이가 그 때문에, 예를 들어 계산해야 for length = 24 bits; value length = 3 octets for length = 17 bits; value length = 3 octets for length = 31 bits; value length = 4 octets
등삼항 연산자를 사용하여 길이를 계산하십시오.
I가 documentation 판독대로 .ksy
파일 삼원 연산자를 사용하는 것이 가능하다. 그래서 값 필드의 크기를 계산하기 위해 다음과 같은 표현이 : 내가받을
kaitai-struct-compiler -t java --java-package com.my.struct.package --verbose file mystruct.ksy
다음과 같은 오류 :
size: length % 8 == 0 ? length/8 : length/8 + 1
이 표현은 해체 WebIDE에서 완벽하게 작동하지만를 내가 가진 자바 클래스를 생성 할 때 :
parsing mystruct.ksy...
reading mystruct.ksy...
mapping values are not allowed here
in 'reader', line 194, column 44:
... e: length % 8 == 0 ? length/8 : length/8 + 1
^
나는이 같은 별도의 계산 된 값에 추가 옥텟의 값을 계산하기 위해 노력했다 :
,...
- id: prefix
size: length/8 + additional_octet
instances:
additional_octet:
value: (length % 8 == 0 ? 0 : 1)
...
그러나 같은 오류가 발생합니다.
이 삼자 연산자를 가지고 싶지 않을 수도 있습니다 ... 당신은'size : length/8 + (길이 % 8 == 0? 0 : 1)'로 시도 할 수 있습니다. 그러나 이것은 단지 추측 일뿐입니다. 여러분이 제공하는 문서는 표현식 ('length/8')에 대한 것이 아니라 값에 관한 것입니다. – AxelH