MQTTプロトコルの[ヘッダの残りの長さ]についてよくわかりません
mqttプロトコルについて勉強中です。
ヘッダの中にあるmqttヘッダ全体の長さを表す部分についてよくわからないことがあるので、mqttについて詳しい方がいれば教えていただけないでしょうか。
mqttプロトコルの[固定ヘッダー部(2Byte)]には最初の1Byte目は[メッセージタイプ][dupフラグ][QOSフラグ][Retain]で構成されており、2Byte目はmqtt全体の長さを表す[ヘッダの残りの長さ]で構成されていますが、わからないのは2Byte目の[ヘッダの残りの長さ]についてです。
2Byte目の[ヘッダの残りの長さ]は1Byteで構成されているものの,下記のURLによれば256MBまで表すことができるそうです。
http://public.dhe.ibm.com/software/dw/jp/websphere/wmq/mqtt31_spec/mqtt-v3r1_ja.pdf
上記URLでそれを可能にするアルゴリズムの方法はわかりましたが、わからないのはそのバイナリの置き場所について、上記の仕様を読んでも、日本語力に乏しい自分にはよくわかりませんでした。
固定ヘッダーの1Byte目で以下のようなバイナリがあったとします。
0001 0000
これはCONNECTメッセージなのはわかりますが、仮に[ヘッダの残りの長さ]が321バイトだったとします。
上記の7ページ目,8ページ目によれば、以下のアルゴリズムで求められるそうですが。(321バイトだった場合)
input X = 321
do
digit = X % 128
X = X / 128
if ( X > 0)
digit = digit or 0x80
print digit
while(X > 0)
[出力]以下が上記コードの結果。
193
2
出力された結果に対し、以下の計算。
65 + (2 * 128) = 321
わからないのは、193と2をヘッダのどの部分に置けばよいかがわかりません。
0000 0010(2)と1100 0001(193)
これをどこに置けばよろしいのでしょうか?
0001 0000(CONNECT)
と続いた場合、普通に
0000 0010(2) 1100 0001(193)
と置けばよろしいのでしょうか?
しかし、そうした場合はどこまでが[ヘッダの残りの長さ]を表すのかがわからないと思うのですが・・
MQTTについて詳しい方、ご教授の方宜しくお願いします。