以下のフォーマットになるようにバイナリデータ
を作成したいのですが、どうするのが手っ取り早いでしょうか?

[フォーマット]
┌───────┬─────┬─────┬─────┬─────┐
|2進数桁数(N桁)│   値A  │   値B  │   値C  │   値D  │
└───────┴─────┴─────┴─────┴─────┘
└   5 bit   ┘└  N bit ┘└ N bit  ┘└  N bit ┘└  N bit ┘

フォーマットの先頭にある5ビットで2進数表現の桁数が格納されており、
その後に続く値(符号付)が、桁数に従い2進数で格納されております。

例えば、
桁数:6桁
値A :0
値B :20
値C :0
値D :20
の場合、

00110 000000 010100 000000 010100 になります。

これを先頭から8ビットずつとって(8ビットにならに場合0パディング)、
バイナリに変換して、

0x30 0x0A 0x00 0xA0

というような感じにしたい。

どういうロジックにするのが簡単なのでしょうか?