sprintf で、桁数設定が出来ない

CS+で16進8桁で表示するために次のように書きました。
sprintf (Str, "DEF = %08X\r\n" ,1023)
しかし、次のように表示されます。
DEF = %8X

期待するのは、DEF = 000003FF です。

オーとゼロを間違えたかと思い確認しました。

sprintf (Str, "DEF = %8X\r\n" ,1023) とすれば

DEF = %8X と表示されます。

sprintf (Str, "DEF = %X\r\n" ,1023) と書けば、
DEF = 3FF と表示されます。

使い方が間違えていますか?