Мне нужно упаковать сложное сообщение в 16-битное слово, которое определяется так:
- Part 1: Error State (Least Significant Byte)
- Bit 0: Error type A (Least Significant Bit)
- Бит 1: Тип ошибки B
- Бит 2: Тип ошибки C
- Бит 3: Тип ошибки D
- Бит 4: Тип ошибки E
- Бит 5: Тип ошибки F
- Бит 6: Тип ошибки G
- Бит 7: тип ошибки H (старший бит)
- Part 2: Mode/Status Additional Status is defined like so:
- Mode: The mode is contained in the least significant 4 bits of the most significant byte. Mode numbers go 0 - 11.
- Бит 12: Тип состояния A
- Бит 13: Тип состояния B
- Бит 14: Тип состояния C
- Additional Status:
- Bit 15: Reset on/off
Кажется, я не могу правильно понять команду pack(). Я хочу упаковать: ошибка типа E, режим 7, статус типа B, дополнительный статус включен
my $msg = pack("n",
pack("C", 0, 0, 0, 0, 1, 0, 0, 0), #error state
pack("C", 7, 0, 1, 0, 1)
);
документ Perl, http://perldoc.perl.org/functions/pack.html, не говорит о маленьком/старшем порядке, когда дело доходит до упаковки символов.