「制限付き」とは、簡単な機能(printfとその仲間)が(埋め込み?)プラットフォームで使用できないことを意味するのか、それとも割り当ての制限であるのかについては言及していません。
とにかく、あなたがしていることは決してうまくいきません。バイナリ変数(長い)を渡すと、自動的に文字列に変換されません。
ここにあるこの関数、コンパクトなitoa関数をチェックしてください。それからltoaを作成するには、いくつかの調整が必要ですが、それがどのように機能するかを簡単に確認できます。
//return the length of result string. support only 10 radix for easy use and better performance
int my_itoa(int val, char* buf)
{
const unsigned int radix = 10;
char* p;
unsigned int a; //every digit
int len;
char* b; //start of the digit char
char temp;
unsigned int u;
p = buf;
if (val < 0)
{
*p++ = '-';
val = 0 - val;
}
u = (unsigned int)val;
b = p;
do
{
a = u % radix;
u /= radix;
*p++ = a + '0';
} while (u > 0);
len = (int)(p - buf);
*p-- = 0;
//swap
do
{
temp = *p;
*p = *b;
*b = temp;
--p;
++b;
} while (b < p);
return len;
}