補充我最近曾與ASN.1未對齊PER編碼數據的工作。我在UPER
數據類型SEQUENCE
中做了二進制補碼整數編碼時遇到問題。兩個在ASN.1不對齊的PER
這似乎是不正確的翻轉最顯著位(字的選擇不當)。對於正整數,領先位1
以及爲負的,這是0
。我假設在這裏有一種瘋狂的方法,但經過一天的工作,似乎我無法將其從ITU-T標準中挖掘出來,也不能自行解決。我懷疑這是因爲INTEGER's
被包裹在SEQUENCE
類型,但我不明白爲什麼它會做到這一點。我要指出,我ASN.1的理解是非常有限。
一個簡單的例子,假設我有以下模式
BEGIN
FooBar ::= SEQUENCE {
Foo INTEGER (-512..511),
Bar INTEGER (-512..511)
}
END
而且我編碼以下,作爲Unaligned PER
test FooBar ::=
{
Foo 10,
Bar -10
}
結果編碼爲十六進制和二進制字符串,分別預期值。
HEX: 0x829F60
BIN: 100000101001111101100000
EXPECTED HEX: 0x02BF60
EXPECTED BIN: 000000101011111101100000
關於這裏發生了什麼的任何想法?