これらすべてのETSIGSMドキュメントに基づいてSMSPDUを処理するためのコードを書いています。私が質問する必要があることが1つあります。PDUには、ユーザーデータの長さフィールドとそれに続くユーザーデータが含まれます。GSM 03.40によると、UDLフィールドは、非圧縮のGSMデフォルトアルファベットが使用されている場合のユーザーデータのセプテットの数です。ただし、データが圧縮されている場合、UDLはユーザーデータのオクテット数であるとも言われています。
引用符を参照してください:
TPユーザーデータがGSM7ビットのデフォルトのアルファベットを使用してコーディングされている場合、[TPユーザーデータの長さ]フィールドは、後続の[TPユーザーデータ]フィールド内のセプテットの数を整数で表します。
[...]
TPユーザーデータが圧縮GSM7ビットデフォルトアルファベットまたは圧縮8ビットデータまたは圧縮UCS2[24]データを使用してコーディングされている場合、TPユーザーデータ長フィールドは、TPユーザーデータフィールド内の圧縮後のオクテット数の整数表現を提供します。フォローする。
問題は、7ビットデータが圧縮され、圧縮されたユーザーデータのオクテット数が7の倍数である場合、最後のオクテットの最後の7ビットがフィルビットであるか実数文字であるかがわからないことです。つまり、圧縮がオンの場合、7オクテットには7ビット文字または8文字の7ビット文字を含めることができます。また、UDLフィールドがオクテットの数である場合、それらの7つのオクテットに7文字または8文字が含まれているかどうかをどのように知ることができますか?UDLにセプテットの数が含まれていれば、すべてが明確になりますよね?それで、私はドキュメントを誤解しましたか、それともそれは本当にこのように機能しますか?
誰かがそれが実際にどのように機能するかを私に説明してもらえますか?前もって感謝します!